Forum: Digitale Signalverarbeitung / DSP / Machine Learning Phasenberechnung bei FFT in Octave


von Daniel -. (root)


Angehängte Dateien:

Lesenswert?

1
octave> t=0:0.0001:1;
2
octave> x=sin(2*pi*100*t)+sin(2*pi*200*t)+sin(2*pi*300*t);
3
octave> plot(0.0001*abs(fft(x))(1:500))
4
octave> grid
5
octave>

erstmal gilt: sin(2*pi*fo*t)   o-o   -j/2(d(f-fo)-d(f+fo))

Das gibt mir das Betrag des Spektrums.
Wie erwartet sehe ich 0.5 an den Frequenzen 100, 200 und 300.
1
octave> t=0:0.0001:1;
2
octave> x=sin(2*pi*100*t)+sin(2*pi*200*t)+sin(2*pi*300*t);
3
octave> plot(angle(fft(x))(1:500))
4
octave> grid
5
octave>

Die Phase kann ich aber aus dem Bild nicht deuten.
Ich würde erwarten, dass an den Frequenzen der Wert -pi/2 einnimmt.
Etwa 1.57. Das tut es tatsächlich, aber schon vor 100!
Und geht genau bei 100 zu +pi/2. Ich hätte 0 erwartet.
Irgendwie hänge ich da bei der Interpretation.

Hoffe jemand kann es nachvollziehen.

Grüsse

von Rüdiger K. (sleipnir)


Lesenswert?

Die Darstellung wird von Dir schon zu recht kritisiert - der Sinus hat 
ja die Fouriertransformierte
Der Phasengang müßte außerhalb des Bereichs der Delta-Impulse entweder 
bei +/-Pi oder 0 liegen, die Gewichtung  des "rechtsseitigen" 
Delta-Impulses wäre -i/2, die Phase also -Pi/2. Tücken der numerischen 
Datenverarbeitung.

Du mußt z.B. darauf achten daß Du ja keinen unendlichen Sinus sondern 
einen zeitbegrenzten Sinus analysierst. Das ist das Produkt der 
Sinusfunktion mit einer Rechteckfunktion. Im Frequenzbereich erhältst Du 
damit die Faltung der Delta-Impulse mit einer si()-Spaltfunktion. Da 
diese das Vorzeichen wechselt müßtest Du auch unererwartete 
Phasensprünge bekommen.

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.