模式如何相同'在np.correlate()工作?

时间:2017-05-21 12:26:47

标签: python numpy

我正在努力了解模式"相同"在函数np.correlate()中。我在一些网站上看到了这个定义,但我无法理解它是如何进行计算以获得最终数组的。

如何:np.correlate([2, 1], [1, 1], 'same')我们得到这个:array([2, 3])

有人可以制作计算示例吗?

2 个答案:

答案 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])