Hallo. ich beschäftige mich gerade etwas mit der Theorie hinter der FFT. Ein Punkt der FFT ist ja je Filter die Phase der Eingangssamples zu drehen und dann die Werte aufzusummieren. Also Phasenrichtig aufzusummieren, damit am Ende ein Vektor herauskommt. Jeder Samplewert besteht ja aus Imaginär (I) und Realteil (Q)... Sagen wir mal der ADC liefert Werte mit 32 kHz. Nun kommt der Trick, dass man so tut als würden die Werte von einem 8 kHz ADC kommen.. diese kennzeichne ich im Strom mal mit "x".... einer zweiten 8 kHZ der 90° Phasenversetzt zum ersten läuft wäre auch in dem Strom enthalten: diesen kennzeichne ich mal mit "o" [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] x o x o x o ----> 90° xo werden dann immer als Vektoren angesehen. Also aus 320 Eingangssamples bleiben dann nur noch 80 Vektoren ... ---- Das heißt also, dass der x-Strom z.b. für den Sinusanteil (I) und o für den Cosinusanteil (Q) steht? Aus diesen 2 Werten kann man ja Amplitude und Phase ermitteln. amplitude = sqrt( (o*o) + (x*x) ) Phase = arcsin (x / amplitude ) So kann ich also die Phase für jedes Wertepaar berechnen? Und dann ganz "einfach" über Differenzbildung der aufeinanderfolgenden Phasen erhalte ich dann den Phasenversatz?? ---- Wie werden denn in der FFT Phasendrehungen realisiert? Z.b. wenn ein Sample für einen bestimmten Filter um 90 Grad gedreht werden muss?? Hoffe das ganze war jetzt nicht ganz so konfus wie es mir gerade vorkommt :-) liebe grüße
Ich versteh die Frage, Antwort würde ich auch gerne wissen...
Fraller S wrote:
> Ich versteh die Frage, Antwort würde ich auch gerne wissen...
Guten Morgen,
da bin ich ja froh, dass ich nicht der Einzige bin :-)
Vielleicht findet sich ja noch jemand der hier ein bissl "Licht ins
Dunkel" bringen kann ;-)
lg
Wie werden denn in der FFT Phasendrehungen realisiert? Z.b. wenn ein Sample für einen bestimmten Filter um 90 Grad gedreht werden muss?? Könntest du das bitte etwas konkretisieren?
Hallo, > Wie werden denn in der FFT Phasendrehungen realisiert? Z.b. wenn ein > Sample für einen bestimmten Filter um 90 Grad gedreht werden muss?? unter Verwendung der FFT werden Phasendrehungen normalerweise durch Multiplikation der Spektren mit exp(j phi) bzw. exp(-j phi) und anschließender Rücktransformation durchgeführt. Die Multiplikation mit exp(j phi) entspricht einer Drehung des Fourierkoeffizienten um den Winkel phi. Es ist dabei unbedingt zu beachten, daß die Fourierkoeffizienten mit den negativen Frequenzen (bzw. den Frequenzen > f_Abtast/2 - das ist ja dasselbe) in die entgegengesetzte Richtung gedreht werden wie die Fourierkoeffizienten zwischen 0 und f_Abtast/w. Das kannst Du Dir recht einfach überlegen, wenn Du die Formel für die kontinuierliche Fouriertransformation diskretisierst.
Für positive und negative Frequenzen dreht der Zeiger in die entgegengesetzte Richtung. Was mit der Frequenz f0=0 und f1=f_Abtast/2 passiert, müßtest Du Dir nochmal genauer anschauen; das vergesse ich immer; es kommt nämlich darauf an, ob Du eine geradzahlige oder ungeradzahlige Anzahl von Abtastwerten hast. Willst Du nur eine 90°-Phasendrehung durchzuführen, schaust Du am besten nach einem Paket, das die sogenannte "Hilberttransformation" dürchführt. In Matlab/GNU-Octave kannst Du die Funktion hilb(...) bzw. hilbert(...) verwenden, um eine 90° Phasendrehung durchzuführen. Dann kannst Du schonmal schauen, wie sich das auswirkt. Gruß, Michael
Hallo zusammen, ehrlich gesagt verstehe ich die ganze Beschreibung nicht so richtig. Einen einzelnen "Samplepunkt" kann man sowieso nicht in der Phase verschieben, da es hier keinen Bezug gibt. Nimmt man ein peridisches Signal f(x) zu dem man eine Frequenz angeben kann, ist eine Phasenverschiebung einfach zu realisieren => zeitliche Verschiebung der Funktion. Bei einem komplexen Gemisch mehrerer Frequenzen ist die Phasenverschiebung nicht mehr so einfach. Eine einfache zeitliche Verschiebung des Signals resultiert in unterschiedlichen Phasenverschiebungen je Frequenz. Dadurch ändert sich in der Regel auch die "Signalform". Beispiel_1: Ein komplexes Signal besteht aus den Frequenzen f1 und f2 mit f2 = 10 * f1. Verzögert man das Signal so, dass f1 eine Phasenverschiebung von 18° erfährt, so wird f2 um 180° verschoben. Beispiel_2: Ein Rechtecksignal enthält die Grundfrequenz sowie alle ungradzahligen Harmonischen (3,5,7,9,11,...). Eine zeitliche Verschiebung liefert wieder ein Rechtecksignal nur. Eine Phasenverschiebung jeder einzelnen Phase jedes Frequenzanteils um 90° (d.h. phi_1 = 90°, phi_3 = 90°, phi_5=90°) liefert ein völlig andere Signalform (siehe Wikipedia - hilbert transformation). Solltest Du vorhaben ein Signal mit der vierfachen Datenrate abzutasten und dann die Infomationen von zwei verschiedenen Zeitpunkten zu nehmen, hast Du noch lange keine Fouriertransformation geschweige denn eine Phasenverschiebung von 90° realisiert! Die FFT ist schon relativ komplex zu rechnen! Da braucht man schon etwas Rechenpower. Die eigentliche Idee kann man sich anhand der Formel verdeutlichen: Im Prinzip stellt die Summe über den Term "e^jwt" (Integral bei der kontinuierliche Fourier-Transf.) einen "Frequenzselektor" dar. Man nimmt seine Eingangssamples, multipliziert diese mit einer Sinusfolge fester Frequenz und Summiert alle Produkte auf. Enthält das Eingangssignal genau diese Frequenz, dann liefert die Summe ein von Null verschiedenes Ergebnis. Ist eine etwas andere Frequenz enthalten liefert die Summe (in etwa) null, da der Sinus orthogonal zu sich selbst ist, wenn sich die Kreisfrequenzen unterscheiden. Durch die Rechnung mit einem komplexen Argument liefert die Fouriertransformation zusätzlich die "Phasenverschiebung" bei jeder einzelnen (diskreten) Frequenz. Was genau möchtest Du jetzt eigentlich machen? Gruß Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.