www.mikrocontroller.net

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


Autor: Gregor Keller (mathemuffel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Günter -.. (guenter)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.