我正在努力了解模式"相同"在函数np.correlate()中。我在一些网站上看到了这个定义,但我无法理解它是如何进行计算以获得最终数组的。
如何:np.correlate([2, 1], [1, 1], 'same')
我们得到这个:array([2, 3])
有人可以制作计算示例吗?
答案 0 :(得分:3)
mode='same'
只意味着你的结果将等于最大输入数组的大小。它是完全互相关的子集(也有mode='full'
选项)。在您的示例中,我们有:
2 1
1 1
------
0+2+0 = 2
(点积,适当时填零,然后"滑动")
2 1
1 1
-----
2+1 = 3
因此[2,3]
的回答。
完全互相关将继续滑动。
2 1
1 1
-------
0+1+0 = 1
因此,完全互相关将为[2,3,1]
。
注意:这些关键字源自这些函数的MATLAB实现
答案 1 :(得分:0)
您可以参考numpy手册,https://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html,
以下是手册中numpy.convolve的示例(numpy.correlate中的“模式”与numpy.convolve相同):
>>> np.convolve([1、2、3],[0、1、0.5])
array([0.,1.,2.5,4.,1.5])
#仅返回卷积的中间值。包含边界效应,其中考虑了零:
>>> np.convolve([1,2,3],[0,1,0.5],'same')
array([1.,2.5,4.])
#两个数组的长度相同,因此只有一个位置完全重叠:
>>> np.convolve([1,2,3],[0,1,0.5,'valid')
array([2.5])