Servus,
mit dem folgenden Code wird die Cross Correlation von zwei
Sinus-Signalen berechnet, die eine Phasenverschiebung von pi/4 haben.
Theoretisch kann diese pi/4 Phasenverschiebung anhand der Scheitelwerte
der Cross Correlation bestimmt werden. Wie macht man weiter mit diesen
Cross Correlation Werten in 'y' in diesem Beispiel?
1
hcorr = dsp.Crosscorrelator;
2
t=[0:0.001:1];
3
x1=sin(2*pi*2*t);
4
x2=sin(2*pi*2*t – pi/4);
5
y=step(hcorr,x2,x1); %computes cross-correlation of x1 and x2
"Wie macht man weiter mit diesen Cross Correlation Werten in 'y' in
diesem Beispiel?"
Was soll denn diese Frage bedeuten? Wenn Du mal zielgerichtete Fragen
stellen würdest könnte man mal was antworten.
http://www.catb.org/esr/faqs/smart-questions.html
Cheers
Detlef
Sorry, ich habe einfach zu grob geschrieben.
Ich wollte eigentlich wissen, wie die Phasenverschiebung aus der
Kreuzkorrelation berechnet werden soll. Diese Verschiebung ist irgendwie
mit Stellen der Scheitelwerte verbunden.
Senmeis
1)Kreuzkorrelation deiner Signale
2)Detektion um wieviele Abtastschritte das Maximum der KK verschoben
ist.
3)aus der Abtastrate und Anzahl der Verschiebung deltaT berechnen.
4)auf den Phasenwinkel zurück rechnen.
Danke. Dein Code funktioniert.
Warum sollte conv() statt dsp.Crosscorrelator verwendet werden? In
Deinem Code wird Faltung allerdings als KK kenngezeichnet.
Senmeis
Owen Senmeis schrieb:> Ich habe Abtastrate verringert und Fehler ändern sich dramatisch:
Klar, Du hast ja auch weniger Informationen.
Owen Senmeis schrieb:> Gibt’s irgendwelche Optimierungsmöglichkeiten, Fehler für niedrige> Abtastraten zu minimieren?
Mein erster Ansatz wäre eine Interpolation der Zeitsignale bevor man die
KK rechnet, z.B. mit einem Spline.
Evtl. könnte man auch mit einer Variation der Abtasrate erreichen im
stationären Zustand!? Aber das ist Spekulation von mir.