WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Amplitude und Phase eines Cosinus mittels FFT genau bestimme

 

Mandel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 30.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2013, 19:09     Titel: Amplitude und Phase eines Cosinus mittels FFT genau bestimme
  Antworten mit Zitat      
Hallo zusammen ...

Ich nähere mich jetzt einem Problem mit dem ich mich schon en Weile herumschlage von einer anderen Richtung. Der Punkt war, dass ich Betrag und Phase sehr viele Cosinus-Verläufe sehr genau gestimmen möchte.
Das habe ich bis jetzt über das Anfitten (mit Hilfe von nlinfit) gemacht. Das dauert aber bei der Menge an daten sehr lang.
Ich hab mich gefragt, warum ich nicht einfach den Vektor Fouriertransformieren, mir die Peaks raussuche und dann auch die entsprechende Phasenlage bekomme. Das wird aber recht ungenau hab ich gemerkt.

Ein Beispiel:
Fit: w=0.3313, p=2.2039
FFT: w=0.3307, p=2.0453

Wobei w die Kreisfrequenz ist und p die Phase. Die relative Abweichung der Frequenz beträgt in diesem noch recht guten Beispiel zwar unter 1%, allerdings sind es bei der Phase schon 7% was deutlich zu ungenau ist.
Woran liegt das?
Die Information muss doch im Spektrum sein, wenn sie beim Fit auch raus kommt...

Vielen Dank schon mal für euere Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen


Mandel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 30.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2013, 09:29     Titel:
  Antworten mit Zitat      
Ich habe eben versucht mit fft(x,1024) die Anzahl der Stützstellen zu erhöhen. Aber das bringt nix an Genauigkeit hab ich das Gefühl, das "verschmiert" das Ergebniss irgendwie nur Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.01.2013, 12:15     Titel:
  Antworten mit Zitat      
Die FFT hat nun mal nur eine begrenzte Auflösung. Diese ist Abhängig von der Abtastfrequenz Fs und der Anzahl abgetasteter Messwerte N.

Code:
dx = Fs/N % Schreitweite in Hz oder anstatt Fs -> ws = rad/s


Das ist die diskrete Schrittweite/Auflösung eines Frequenzspektrums. Zwischen den Frequenzen von dx kann die FFT die Frequenz nicht ermitteln. Man kann, wie du dass nun auch schon selber getan hast, noch durch Zeropadding (=Anfügen von Nullen am Ende des Signals) die Schrittweite verkleinern und damit die Auflösung erhöhen. Aber wie du auch schon erkannt hast, gewinnt man dadurch keine neuen Informationen. Lediglich die im Signal enthaltene Freq. kann etwas genauer ermittelt werden. Allerdings kann das zu einem neuen Problem führen...

Das Verschmieren des Spektrums ist der sogenannte Leck oder Leckage Effekt. Dieser tritt dann auf, wenn die Signalfrequenz kein ganz zahliges Vielfaches von dx ist. Das ist in der Realität sehr oft der Fall. Hierfur wurden Fensterfunktionen (z.B. Hamming) entworfen, um den Effekt zu minimieren. Verhindern oder ganz beseitigen kann man ihn aber nicht. Letztendlich hängt die Genauigkeit nur von den beiden oben genannten Parametern ab. Wenn du eine höhere Auflösung willst, musst du eine höhere Abtastfreq. wählen und die Messzeit verlängern.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mandel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 30.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2013, 17:07     Titel:
  Antworten mit Zitat      
Hm... Ich versteh das Problem schon...
Mit dem theoretischen Hintergrund kenne ich mich zwar wenig aus, aber ich habe gehofft, dass man da doch irgendwie tricksen kann.

Der Punkt der mich hoffen lies war der, dass ich mit dem Fit die Parameter ja auch seh gut heraus bekomme. Die Information muss ja also in den Daten Stecken. Ich hoffte also, dass man mit dem a priori-Wissen, dass es sich um einen 1+Cosinus handelt (also das Spektrum nur aus 3 Peaks besteht) irgendwas machen kann...
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.01.2013, 17:48     Titel:
  Antworten mit Zitat      
Ich kann deinen Fit nicht beurteilen. Auf der anderen Seite halte ich es für etwas vermessen, noch zu erwarten, dass die 3. und 4. Stelle hinter dem Komma auch noch stimmen soll. Evtl. hat ja nicht mal die Fit Funktion dieses Genauigkeit Wink

Aber zurück zur FFT...nein es gibt keinen Trick. Solange die Frequenz des Cosinus keine ganzzahliges Verhältnis zu dx ist, wirst du nie ein exaktes Ergebnis erhalten. Ebenfalls spielt auch die Anzahl Messwerte eine entscheidende Rolle.

Was meinst du aber mit 1+cosinus...wieso drei Peaks? +1 = Offset? Dann hast du eine Linie bei Frequenz 0 und eine bei der Frequenz w ( bei cos(w*t)). Wo soll die 3. herkommen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Mandel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 30.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2013, 18:49     Titel:
  Antworten mit Zitat      
Ich sag mal so, ich weiß dass der Fit deutlich bessere Ergebnisse liefert, weil das was dabei raus kommt, wenn ich mit den Werten weiter Rechne super aussieht. Mit der FFT-Methode kommt ziemlicher Mist raus, da das ganze sehr Phasensensitiv ist.

Es handelt sich um ein optisches Interferenzmuster. Ich habe also eine Cosinusfunktion mit Offset. Im Endeffekt etwas in Richtung
Code:
y = 1 + m*cos(w*x+p)
, wobei 0<=m<=0.5 ist.
Die drei Peaks kommen doch durch die FFT des Cosinus mit Offset. Der Offset leifert in der Mitte des Spektrums einen und der Cosinus bei +/- w.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.01.2013, 18:58     Titel:
  Antworten mit Zitat      
Zitat:

Ich sag mal so, ich weiß dass der Fit deutlich bessere Ergebnisse liefert, weil das was dabei raus kommt, wenn ich mit den Werten weiter Rechne super aussieht. Mit der FFT-Methode kommt ziemlicher Mist raus, da das ganze sehr Phasensensitiv ist.


Das sind keine wirklich aussagekräftigen Infos Wink. Es ist vielleicht ungenau...aber Mist?

Ok, wenn du eine zweiseitige Darstellung des Spektrum wählst von

-Fs/2...0...+Fs/2

erhält man natürlich 2 Peaks für dasselbe w. Aber das ist ja nur von dem einen w Wink. Mehr kann ich hier für dich aber nicht tun. Dann musst du entweder mit dem Fit weitermachen, oder aber mit den Ungenauigkeiten der FFT leben. Wobei mit einer hohen Abtastrate und entsprechend vielen Messwerten hier durchaus brauchbare Ergebnisse von der FFT zu erwarten sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mandel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 30.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2013, 11:51     Titel:
  Antworten mit Zitat      
DSP hat Folgendes geschrieben:
Das sind keine wirklich aussagekräftigen Infos Wink. Es ist vielleicht ungenau...aber Mist?

Naja, die Aussagekräftigen Infos kamen ja schon oben (Abweichungen von 7% +-). Und der Mist kommt ja nicht bei der FFT raus. Die ist nur so uich's leider nicht ausdrücken, da das Ergebnis schlecht quantifiziert werden kann. "Matschiger Mist" würde es sogar noch besser treffen Wink

Eine höhere Abtastrate ist leider nicht wirklich wünschenswert, da die Messwertausnahme möglichst zügig vonstattengehen soll.
Nun gut, da muss ich mal sehn, wie ich's mache...

Vielen Dank auf alle Fälle Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.