[PYTHON] Schätzen Sie die Verzögerung zwischen zwei Signalen

Einführung

Für zwei ähnliche Signale werden ihre Verzögerungszeiten durch Berechnung der Interkorrelationsfunktion geschätzt. Pythons Numpy wird verwendet, um die Interkorrelationsfunktion zu berechnen.

Ein Signal erstellen

Erstellen Sie beispielsweise zwei Signale, eines mit Verzögerung und das andere ohne Verzögerung, auf dem Zielsignal der Normalverteilung und dem Rauschen der Normalverteilung.

import numpy as np

target_sig = np.random.normal(size=1000) * 1.0
delay = 800
sig1 = np.random.normal(size=2000) * 0.2
sig1[delay:delay+1000] += target_sig
sig2 = np.random.normal(size=2000) * 0.2
sig2[:1000] += target_sig

sig12.png

Berechnung der gegenseitigen Korrelationsfunktion

Berechnen Sie die Interkorrelationsfunktion der beiden erzeugten Signale mit `np.correlate ()`. Die maximale Position der gegenseitigen Korrelationsfunktion ist die Verzögerungszeit. Eine Einschränkung ist, dass ** wenn der Durchschnittswert des Signals weit von 0 ** entfernt ist, dies die Berechnung der Interkorrelationsfunktion beeinflusst.

sig1 = sig1 - sig1.mean()Und so weiter**Setzen Sie den Durchschnitt auf 0**Es ist notwendig, Verarbeitung wie hinzuzufügen.



```python
import numpy as np

corr = np.correlate(sig1, sig2, "full")
estimated_delay = corr.argmax() - (len(sig2) - 1)
print("estimated delay is " + str(estimated_delay))
estimated delay is 800

Zeichnung

Zeichne am Ende. Sie können sehen, dass es in dem Teil einen großen Peak gibt, der die Verzögerungszeit im Wert der gegenseitigen Korrelationsfunktion anzeigt.

import matplotlib.pyplot as plt

plt.subplot(4, 1, 1)
plt.ylabel("sig1")
plt.plot(sig1)

plt.subplot(4, 1, 2)
plt.ylabel("sig2")
plt.plot(sig2, color="g")

plt.subplot(4, 1, 3)
plt.ylabel("fit")
plt.plot(np.arange(len(sig1)), sig1)
plt.plot(np.arange(len(sig2)) + estimated_delay, sig2 )
plt.xlim([0, len(sig1)])

plt.subplot(4, 1, 4)
plt.ylabel("corr")
plt.plot(np.arange(len(corr)) - len(sig2) + 1, corr, color="r")
plt.xlim([0, len(sig1)])

plt.show()

res.png

Recommended Posts

Schätzen Sie die Verzögerung zwischen zwei Signalen
Untersuchen Sie die Beziehung zwischen zwei Variablen (2)
Untersuchen Sie die Beziehung zwischen zwei Variablen (1)
Bayes Modellierung-Schätzung des Unterschieds zwischen den beiden Gruppen-