当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy correlate用法及代码示例


本文简要介绍 python 语言中 numpy.correlate 的用法。

用法:

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

两个一维序列的互相关。

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

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

a 和 v 序列在必要时补零,而 conj 是共轭。

参数

a, v array_like

输入序列。

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

请参阅 convolve 文档字符串。请注意,默认值为 ‘valid’,与使用 ‘full’ 的 convolve 不同。

old_behavior bool

old_behavior 在NumPy 1.10 中被删除。如果您需要旧的行为,请使用 multiarray.correlate。

返回

out ndarray

a 和 v 的离散互相关。

注意

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

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

这与 c_{av}[k] 通过 c'_{av}[k] = c_{av}[-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 ])

请注意,当两个输入序列改变位置时,您会得到时间反转的复共轭结果,即 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])

相关用法


注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.correlate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。