numpy.correlate

numpy.correlate(a, v, mode='valid')[源代码]

两个一维序列的互相关。

此函数计算信号处理文本中一般定义的相关性:

c_{av}[k] = sum_n a[n+k] * conj(v[n])

其中a和v序列在必要时是零填充的,conj是共轭的。

参数
a, varray_like

输入序列。

mode'valid'、'same'、'full',可选

参考 convolve 文档字符串。请注意,默认值是“有效的”,与 convolve ,使用“full”。

old_behavior布尔

old_behavior 在numpy 1.10中移除。如果你需要旧的行为,使用 multiarray.correlate .

返回
out恩达雷

离散互相关 av .

参见

convolve

两个一维序列的离散线性卷积。

multiarray.correlate

旧的,没有共轭的,相关的版本。

笔记

上述相关性的定义并不唯一,有时相关性的定义可能不同。另一个常见的定义是:

c'_{av}[k] = sum_n a[n] conj(v[n+k])

与…有关 c_{{av}}[k] 通过 c'_{{av}}[k] = c_{{av}}[-k] .

实例

>>> np.correlate([1, 2, 3], [0, 1, 0.5])
array([3.5])
>>> np.correlate([1, 2, 3], [0, 1, 0.5], "same")
array([2. ,  3.5,  3. ])
>>> np.correlate([1, 2, 3], [0, 1, 0.5], "full")
array([0.5,  2. ,  3.5,  3. ,  0. ])

使用复杂序列:

>>> np.correlate([1+1j, 2, 3-1j], [0, 1, 0.5j], 'full')
array([ 0.5-0.5j,  1.0+0.j ,  1.5-1.5j,  3.0-1.j ,  0.0+0.j ])

注意,当两个输入序列发生变化时,会得到时间反转的复杂共轭结果,即, c_{{va}}[k] = c^{{*}}_{{av}}[-k]

>>> np.correlate([0, 1, 0.5j], [1+1j, 2, 3-1j], 'full')
array([ 0.0+0.j ,  3.0+1.j ,  1.5+1.5j,  1.0+0.j ,  0.5+0.5j])