numpy.correlate:完整和有效之间的关系

时间:2015-03-10 14:32:39

标签: python numpy convolution cross-correlation

我在两组数据上使用numpy.correlate,这两组数据都是20000个值。

文档指出:

  

模式:{'完整','有效','相同'},可选'完整':

     

默认情况下,模式为“已满”。这将返回每个点的卷积   重叠,输出形状为(N + M-1,)。在终点   卷积,信号不完全重叠,边界   可以看到效果。

     

'same':模式相同返回长度max(M,N)的输出。边界效应   仍然可见。

     

'有效':模式有效返回长度max(M,N) - min(M,N)+的输出   1.卷积乘积仅用于信号完全重叠的点。信号边界外的值无效

根据这些解释,我希望我的集合中“有效”选项会给我与通过使用“完整”选项返回的值20000获得的值相同的值,因为只有此值才会叠加集合。但是这两个值是不同的。

有人可以解释它是如何运作的吗?

1 个答案:

答案 0 :(得分:1)

请记住,Python索引从零开始而不是1.你想要索引19999而不是20000:

x = np.random.randn(20000)
y = np.random.randn(20000)

np.correlate(x, y, 'valid')[0]
# -29.778322045152521

np.correlate(x, y, 'full')[19999]
# -29.778322045152521