當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。