numpy.correlate¶
-
numpy.
correlate
(a, v, mode='valid')[source]¶ 两个1维序列的互相关。
该函数计算信号处理文本中通常定义的相关性:
c_{av}[k] = sum_n a[n+k] * conj(v[n])
其中a和v序列在必要时被填零,conj是共轭。
参数: a,v:array_like
输入序列。
mode:{'valid','same','full'},可选
old_behavior:bool
在NumPy 1.10中删除了old_behavior。如果你需要旧的行为,使用multiarray.correlate。
返回: out:ndarray
a和v的离散互相关。
也可以看看
convolve
- 离散,两个一维序列的线性卷积。
multiarray.correlate
- 老,没有共轭,correlate的版本。
笔记
上述相关性的定义不是唯一的,并且有时相关性可能被不同地定义。另一个常见的定义是:
c'_{av}[k] = sum_n a[n] conj(v[n+k])
其通过
c'_ {av} [k] = c_与
。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])