python 中的梯形内核

Trapezoidal Kernel in python

我想在 python(可能使用 numpy 或 scipy)中实现一个梯形核来进行卷积,就像在 astropy 模块中作为 Trapezoidal1Dkernel 出现的那样。我尝试过用梯形波形进行卷积,但结果并不令人满意。

def trapzoid_signal(t, width=2., slope=1., amp=1., offs=0):
    global trasig
    trasig=[]
    trasig = slope*width*signal.sawtooth(2*np.pi*t/width, width=0.5)/4.
    trasig+= slope*width/4.
    trasig[trasig>amp] = amp
    return trasig + offs
t = np.linspace(0, 32, 34)
trapzoid_signal(t, width=32, slope=1, amp=0.0322)
print(trasig)
z = scipy.signal.convolve(trasig,new)

如果我打印 z 它给出:

[ nan  nan  nan ...,  nan  nan  nan]

我试过绘制 z 它什么也没给出。有帮助吗?

尤里卡!!!我做到了。关于为什么它没有绘制或打印值 [ nan nan nan ..., nan nan nan] 的事情已通过使用我在 Whosebug 本身上找到的以下代码删除。

ind = np.where(~np.isnan(new))[0]
first, last = ind[0], ind[-1]
new[:first] = new[first]
new[last + 1:] = new[last]

然后它解决了我的问题。我不仅得到了 z 的值,而且得到了我的情节。感谢 whosebug.com。