无需卷积的python卷积

时间:2018-09-05 13:09:51

标签: python numpy scipy convolution

我正在寻找一种简单的方法来实现2个n-dim数组的2D卷积而无需在python中填充。 我找到了功能

scipy.ndimage.convolve(input, weights, output=None, mode='constant', cval=0.0, origin=0)

这似乎完全可以满足我的要求,但是有点很多。该功能提供了一些用于边框区域填充的选项,但据我所知,没有任何填充的NO选项,这让我真的很纳闷。

当然有可能只是划掉边界,但这对我来说似乎是一种没有吸引力的解决方案,并且由于我一直在关注程序的性能,因此无法避免不必要的计算


编辑: 对不起,但是我混淆了相关性和卷积。我真正的意思是相关。

1 个答案:

答案 0 :(得分:1)

尝试一下:

from scipy import signal
sig = np.repeat([0., 1., 0.], 100)
win = signal.hann(50)
#filtered = signal.convolve(sig, win, mode='valid') / sum(win)
filtered = signal.correlate(sig, win, mode='valid') / sum(win)
print(len(sig), len(filtered))
# 300 251
plt.plot(sig)
plt.show()
plt.plot(filtered)
plt.show()

enter image description here