numpy.correlate #
- 麻木的。关联( a , v , mode = 'valid' ) [来源] #
两个一维序列的互相关。
该函数计算信号处理文本中通常定义的相关性:
\[c_k = \sum_n a_{n+k} \cdot \overline{v}_n\]a 和 v 序列在必要时用零填充,并且 \(\overline x\)表示复共轭。
- 参数:
- 返回:
- 输出数组
a和v的离散互相关。
也可以看看
convolve
两个一维序列的离散线性卷积。
multiarray.correlate
旧的,无共轭,相关的版本。
scipy.signal.correlate
使用FFT,在大型阵列上具有优越的性能。
笔记
上述相关性的定义并不唯一,有时相关性可能有不同的定义。另一个常见的定义是:
\[c'_k = \sum_n a_{n} \cdot \overline{v_{n+k}}\]这与\(c_k\)经过\(c'_k = c_{-k}\)。
numpy.correlate
在大型数组(即 n = 1e5)中可能执行缓慢,因为它不使用 FFT 来计算卷积;在这种情况下,scipy.signal.correlate
可能会更好。例子
>>> 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 ])
请注意,您会得到时间反转的复共轭结果 (\(\overline{c_{-k}}\)) 当两个输入序列 a 和 v 交换位置时:
>>> 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])