Forum: Digitale Signalverarbeitung / DSP / Machine Learning Probleme bei Phasenberechnung mit der FFT


von Gregor K. (mathemuffel)


Lesenswert?

Hallo,

ich habe eine FFT genommen und sie in sehr kleinen Schritten über ein 
„sauberes" Sinussignal gleiten lassen. Die FFT hat dabei immer mehrere 
Perioden des Sinus angeboten bekommen. Natürlich immer mit einem 
wechselnden Startwinkel des Sinus für das Betrachtungsfenster der FFT. 
Je nach Position des Betrachungsfensters bekomme ich nun urplötzlich 
eine negative Phase. So wird aus z.B. 1.31 im nächsten 
Betrachtungsfenster -1.32 obwohl ich das Betrachtungsfenster nur minimal 
verschoben habe.
Ändert nun das Sinussignal innerhalb des Betrachtungsfensters noch seine 
Periodendauer so tritt dieser Effekt besonders oft auf.

Weis irgend jemand woran das nun liegt???

Beste Grüße
  Gregor

von Günter -. (guenter)


Angehängte Dateien:

Lesenswert?

Könnte eine Erklärung dafür sein das der arctan() der für die 
Phasenberechnung genutzt wird nicht eindeutig ist?

Ich hab mal einen Plot angehängt mit N=16 und der Sinus als Eingang zur 
FFT wird bei 0, 1, 2, 3 und 4 gestartet. In dem Plot sind das die 
Spalten 1-5.

Die Zeilen zeigen:

- Sinus, der Eingang zur FFT
- Reales FFT-Ergebnis
- Imaginäres FFT-Ergebnis
- arctan() vom FFT-Ergebnis
- arctan2() vom FFT-Ergebnis

Der Unterschied zwischen arctan() und arctan2() ist das die Funktion 
arctan2 nicht den Quotienten imag/real bekommt, sondern beide Vektoren 
extra und somit weiß welcher Wert welches Vorzeichen mitbrachte und 
damit den Quadranten korrigieren kann.

Das sieht man ganz gut wenn man die beiden Phasen für k=2 in der 2. 
Spalte vergleicht. Für den arctan() ist das Ergebnis 1,5, für arctan2() 
-1,5. Vergleicht man das mit der 1. Spalte, dann hat für arctan() das 
Vorzeichen gewechselt, für arctan2() nicht.

von daniel (Gast)


Lesenswert?

@Günter

atan zu verwenden ist falsch, atan2 bzw angle sollte man
nehmen. Man will ja schliesslich den Winkel einer
komplexen Zahl z haben. Und der ist zu jedem z eindeutig.

@Gregor

vielleicht hat Günter insofern recht, dass du vielleicht
die Phase mit atan berechnest.
Generell gilt x(t-t0) o-x exp(-j2pi*f*t0)*X(f)
der Spektrum der verschobenen Zeitfunktion ergibt
sich aus dem "gedrehtem" Spektrum der unverschobenen
Zeitfunktion. Dies ist eine Uhrzeigerdrehung.
Genaudiese Drehung sollte auch sich in der Phase
niederschlagen. Beträge von transformierten x(t) und x(t-t0) sind
identisch.

--
daniel

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
Noch kein Account? Hier anmelden.