mode参数确定边界附近发生的情况.如果您有长度为x和y(x> y)的输入向量:
> valid / 0:只接收两个信号重叠的卷积部分(x-y 1个点)
>相同/ 1:输出矢量的长度与较长输入矢量的长度相同(x点)
> full / 2:来自信号之间甚至只有一个重叠样本的区域的所有数据(x y-1个点)
这些模式的数字不是很公开定义,可以在numpy的源代码中找到.在任何情况下,xcorruses完整模式. (实际上,在给出卷积或关联模式时,只有模式名称的第一个字母很重要.)
关于这些功能的真正作用存在一些混淆. numpy.correlate有两种不同的行为,取决于numpy版本.在内部,这些被称为multiarray.correlate(旧)和multiarray.correlate2(新). numpy.convolve反转第二个输入向量,然后使用multiarray.correlate(即不推荐用于关联的那个).
所以,如果你想要确定,你可以测试会发生什么.基本功能是两个向量之间的乘积,其中向量一次移动一个位置.为了澄清这一点,我将使用一些带有两个向量的数字示例.
a <= [1,2,3,4,5]
b <= [10,20]
让我们先看看卷积:
numpy.convolve(a,b,mode='full') => [ 10, 40, 70, 100, 230, 100]
这是因为:
1 2 3 4 5 => 1 x 10 = 10
20 10
1 2 3 4 5 => 1 x 20 + 2 x 10 = 40
20 10
...
1 2 3 4 5 =>