Python numpy.correlate函数方法的使用

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中correlate方法的使用。

numpy.correlate

numpy.correlate(a, v, mode='valid')    [source]

两个一维序列的互相关。

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

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

其中a和v序列在必要时进行zero-padded,而conj是共轭。

参数 :

a, v :array_like

输入序列。

mode{‘valid’, ‘same’, ‘full’}, 可选

请参考convolve文档字符串。 

请注意,默认值是 ‘valid’,与卷积不同,后者使用‘full’。

old_behavi或bool

在NumPy 1.10中删除了old_behavior。

如果您需要旧的行为,

请使用multiarray.correlate。

返回值 :

out :ndarray

a和v的离散互相关。

Notes

上面相关性的定义不是唯一的,有时相关性可以不同地定义。另一个常见的定义是:

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])
推荐阅读
cjavapy编程之路首页