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
Eine unguenstige Idee. 28kHz mit 192 kHz abzutasten, ergibt etwa 7 Punkte pro Periode. Und du moechtest milligrad detektieren. Mit Amplituden- und Phasenrauschen drauf. Mit einer endlichen Anzahl Bit auf dem ADC ? .. sportlich. Dh vergiss es. Auch in Quadratur. Mach mal eine Fehlerrechnung. Wie lange muss die Integrationszeit sein, um ohne Stoerungen auf die Miligrad zu kommen. Allenfalls in Analog, mit Quadratur. Die Integrationszeit ist die Periodenzeit mal die Winkelaufloesung. also 30us * 360'000. Die Integrationszeit waere dann 10 sekunden.. hab ich was falsch gemacht ? Und die Ansprechzeit also im 10s Bereich. Also erst mal festlegen, in welchem Frequenzberich die Stoerungen sein koennen, und welche Integrationszeit man waehlen will, Welches die Ansprechzeit sein soll.
:
Bearbeitet durch User
192 kHz klingt nach Soundkarte :) Ich würde es mit SAM (Sinus Approximation Method), sprich einem linearem Fit versuchen. Da kann man dann noch mit der Anzahl der Perioden pro Fit und der Messdauer spielen. Wichtig für MonteCarlo wäre eine realistische Größenordnung des Rauschens.
:
Bearbeitet durch User
Rund 7 Punkte je Periode sind zwar nicht viel, das kann aber durch messen über mehr Periode ausgegleichen werden. Bei einer nocht sehr hohen Zahl an Messpunkten muss man ggf. aufpassen mit der Zahl der Datenpunkte die man nutzt. Im Idealfall sollte man ein ganze Zahl an Periden des Signals nutzen - andernfalls kann man Artefakte vom Anfang und Ende bekommen. Da kann man sich ggf. mit Wichtung einiger Punkte am Anfang und Ende weiterhelfen. Das kann besonders bei der Korrelation stören wenn man das Maximum sucht - das ist ohnhin kein gute Wahl, weil man die besser Hälfte der Informationen ignoriert. Besser wird es da den Nulldurchgang bei der Korrelation zum Sinus zu suchen - das nutzt die bessere Hälfte der Informationen. So wirklich groß ist dann der Unterschied zur IQ methode nicht. Kleine Unterschiede gibt es ggf. durch die Randpunkte und nicht ganz gleichmäßige Abtastung der Phase zwischen 0 und 2 Pi. Wie viele Datenpunkte man braucht, hängt vom S/N des Signals ab - da ist dann irgendwa eine Begrenzung. Das wird aber von einer analogen verarbeitung nicht besser, sofern der AD durch die Abtastung keine nennenswerten extra Störungen verursacht. 192 kHz klingt noch nach Audio AD, und damit eher 16 Bit. Die Qualität ist analog bei so etwas wie Mulitplication kaum bis gar nicht zu realiiseren.
Hier ist ein weiters Verfahren beschrieben http://forums.ni.com/ni/attachments/ni/300/7428/1/FFT%20tone%20detection%20Moriat%20NIWeek99.ppt in den Notizen steht auch noch was ;)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.