scipy.signal.

correlation_lags#

scipy.signal.correlation_lags(in1_len, in2_len, mode='full')[source]#

計算一維互相關的延遲 / 位移索引陣列。

參數:
in1_lenint

第一個輸入大小。

in2_lenint

第二個輸入大小。

modestr {‘full’, ‘valid’, ‘same’}, 選項性

一個字串,指示輸出的尺寸。 有關更多資訊,請參閱 correlate 文件。

返回:
lagsarray

返回一個包含互相關延遲/位移索引的陣列。 索引可以使用相關性的 np.argmax 進行索引,以返回延遲/位移。

參見

correlate

計算 N 維互相關。

筆記

連續函數 \(f\)\(g\) 的互相關定義為

\[\left ( f\star g \right )\left ( \tau \right ) \triangleq \int_{t_0}^{t_0 +T} \overline{f\left ( t \right )}g\left ( t+\tau \right )dt\]

其中 \(\tau\) 定義為位移,也稱為延遲。

離散函數 \(f\)\(g\) 的互相關定義為

\[\left ( f\star g \right )\left [ n \right ] \triangleq \sum_{-\infty}^{\infty} \overline{f\left [ m \right ]}g\left [ m+n \right ]\]

其中 \(n\) 是延遲。

範例

訊號與其時間延遲的自我的互相關。

>>> import numpy as np
>>> from scipy import signal
>>> rng = np.random.default_rng()
>>> x = rng.standard_normal(1000)
>>> y = np.concatenate([rng.standard_normal(100), x])
>>> correlation = signal.correlate(x, y, mode="full")
>>> lags = signal.correlation_lags(x.size, y.size, mode="full")
>>> lag = lags[np.argmax(correlation)]