Frequenz, Amplitude und Phase eines Sinussignals bestimmen

OP #3890053
Lesenswert?

Liebe Freunde der gehobenen Signalverarbeitung,

immer mal wieder möchte/muss man Frequenz, Amplitude und Phase eines 
Sinussignals aus Abtastwerten bestimmen. Ich habe ein Matlab script 
angehängt, das genau dies tut. Ich habe das Verfahren auch schon in dem 
einen oder anderen post empfohlen.

Das Hauptaugenmerk liegt dabei auf der Frequenzbestimmung. Wenn man die 
Frequenz schon von vorneherein kennt gibt es besseres, z.B. Goertzel.

Dieses Verfahren bestimmt die Frequenz mit.

Das Verfahren stammt von Prony
http://en.wikipedia.org/wiki/Prony%27s_method
es ist für die Anwendung reduziert auf eine einzige Frequenz. Dann wird 
es recht anschaulich:

Die Differenzengleichung eines ungedämpften diskreten Systems lautet
sig(n+1)=2*cos(w)*sig(n)-sig(n-1);
Das ist eine lineare Gleichung in den Abtastwerten für den Term 
2*cos(w). Die löse ich mit linearer Regression für das überbestimmte 
Gleichungssystem.

Die herangezogenen Abtastwerte müssen nahe bei Nyquist/Halbe liegen, 
i.e. bei 4 Abtastungen pro Welle, sonst wird die Numerik zu schlecht. 
Das ist in dem script duch die FFT berücksichtigt, die zunächst die 
ungefähre Frequenz bestimmt.

Ich hoffe, das das script vielen nützlich ist, gerne feedback.

math rulez!
Cheers
Detlef
Angehängte Dateien:
#4747183
Lesenswert?

Hallo Detlef,

das sieht sehr interessant aus. Deine vereinfachte Formel sieht schon 
fast minimalistisch aus! Mich würde interessieren, wie du zu der Formel 
genau gekommen bist. Ist der Weg und die Erklärung in einer Lektüre zu 
finden oder hast du das händisch gemacht?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren