Gast
#4207992
Hallo,
ich möchte gerne die Phasendifferenz zwischen zwei Signalen bestimmen.
Die Frequenz der beiden Signale beträgt f_Resonanz = 28 kHz. Die
Phasenverschiebung liegt im m° Bereich. Ich taste mit 192 kHz ab.
Momentan versuche ich verschiedene Algorithmen mit diesen Werten in
Matlab zu simulieren und hänge bei der Kreuzkorrelation fest.
Wenn ich als Referenzsignal einen cos mit den 28kHz als Frequenz nehme
und als simuliertes Messsignal den gleichen Cosinus mit einer
Zeitverschiebung von 5E-7 (+ein zufälliges Rauschen), die beiden mit
xcorr korreliere, dann berechnet Matlab mir einen viel zu großen Wert.
Je kleiner der Wert der vorgegebenen Zeitverschiebung (und das kann bei
den Messungen später leider schon passieren), desto schlimmer wirds,
bzw. dann gibt er mir irgendwann einfach gleich 0 aus.
Kann das daran liegen, dass ich zu wenig Abtastpunkte habe? Und hat
irgendjemand eine Idee, wie es vielleicht doch noch mit der
Kreuzkorrelation klappen könnte. Oder sonst andere Ideen (IQ-Verfahren
klappt ganz gut, vielleicht Cordic noch versuchen?)?
Danke euch,
Caro
Falls es hilft, hier das, was bei mir in Matlab steht:
fs = 192000;
fr = 28000;
t_max = 1;
A_noise = 0.00001;
diff = 5E-7;
t = [1/fs : 1/fs : t_max];
ref = cos(2*pi*fr*t);
s1 = cos(2*pi*fr*(t - diff)) + A_noise* randn(1,t_max*fs);
%Phasendifferenz
for diff_id = 1:50
[acor,lag] = xcorr(s1,ref);
[~,I] = max(abs(acor));
lag_delay = lag(I);
time_delay(diff_id) = lag_delay/fs;
end
end