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