scipy.signal.

correlation_lags#

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

Berechnet das Lag-/Verschiebungsindex-Array für 1D-Kreuzkorrelation.

Parameter:
in1_lenint

Länge des ersten Inputs.

in2_lenint

Länge des zweiten Inputs.

modestr {‘full’, ‘valid’, ‘same’}, optional

Ein String, der die Größe des Outputs angibt. Weitere Informationen finden Sie in der Dokumentation correlate.

Rückgabe:
lagsarray

Gibt ein Array zurück, das die Kreuzkorrelations-Lag-/Verschiebungsindizes enthält. Die Indizes können mit np.argmax der Korrelation indiziert werden, um die Lag-/Verschiebung zurückzugeben.

Siehe auch

correlate

Berechnet die N-dimensionale Kreuzkorrelation.

Hinweise

Die Kreuzkorrelation für kontinuierliche Funktionen \(f\) und \(g\) ist definiert als

\[\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\]

Dabei ist \(\tau\) die Verschiebung, auch bekannt als Lag.

Die Kreuzkorrelation für diskrete Funktionen \(f\) und \(g\) ist definiert als

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

Dabei ist \(n\) der Lag.

Beispiele

Kreuzkorrelation eines Signals mit seiner zeitverschobenen Kopie.

>>> 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)]