python中的梯形内核

时间:2017-06-15 08:05:43

标签: python-3.x numpy scipy convolution

我想在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它什么都没有。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

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

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

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