Tach, Grundlagen Fragen zur FFT: Meine "N"s bestimmen ja in wie viele "Spalten" mein Spektrum zerlegt wird. Nehmen wir an mein Signal wäre Sprache und ich räume ihm eine Bandbreite von 2.8 kHz ein. Das maximale N was mein DSP zulässt ist 255. Ergo steht eine "Spalte" für ca. 11 Hz. Bis hier hin: richtig gedacht oder zurück auf los? Reichen mir 255 * 11Hz um das Signal akkustisch annehmbar wieder zurück zu wandeln und aus zu geben? Wo liegt die Grenze der "Spaltenbreite" und wie wird das Fachtechnisch genannt? Entsprechen die "Spalten" dem was man unter "Harmonischen" versteht? Wenn ja wären meine obrigen annahmen Falsch. Wie würde sich die Variation von N dann bemerkbar machen? Frage zur Breite des "Messfensters". Wenn die Länge des Fensters kürzer ist als die tiefste zu messende Frequenz, wird diese dann noch erkannt oder liegt hier die untere Frequenz für mein kleinstes N? Gruß und Danke Florian
Hallo, Nehmen wir an mein Signal wäre Sprache und ich räume ihm eine Bandbreite von 2.8 kHz ein. Das maximale N was mein DSP zulässt ist 255. Ergo steht eine "Spalte" für ca. 11 Hz. Bis hier hin: richtig gedacht oder zurück auf los? --> Fast richtig, da das Spektrum ab der Mitte gespiegelt ist, hast Du effektiv nur halb so viele "bins" Reichen mir 255 * 11Hz um das Signal akkustisch annehmbar wieder zurück zu wandeln und aus zu geben? Wo liegt die Grenze der "Spaltenbreite" und wie wird das Fachtechnisch genannt? --> Da hab ich leider keine Erfahrung...in der Theorie klappt das verlustfreie umwandeln nur bei unendlich langen periodischen Signalen...Sprachsignale sind leider nicht periodisch. Entsprechen die "Spalten" dem was man unter "Harmonischen" versteht? Wenn ja wären meine obrigen annahmen Falsch. Wie würde sich die Variation von N dann bemerkbar machen? --> Du hast die sog. Grundfrequenz und die harmonischen, also mehrfache der Grundfrequenz. Die Variation von N verändert die "Frequenzauflösung". Das heißt bei größerem N ist der Abstand zwischen den Bins kleiner. z.B. f_s = 10 Hz N=2 f_s = 10Hz N=4 delta_f = 5 Hz delta_f = 2,5 Hz Außerdem steigt bei höheren N auch der Rechen- und Speicheraufwand. Frage zur Breite des "Messfensters". Wenn die Länge des Fensters kürzer ist als die tiefste zu messende Frequenz, wird diese dann noch erkannt oder liegt hier die untere Frequenz für mein kleinstes N? --> Die Messfensterlänge ist von der Abtastfrequenz deines ADC und der Anzahl der Samples N abhängig. Fensterlänge= N* 1/f_abtast. Alles was unter der Grundfrequenz (der kleinsten EXAKT darstellbaren Frequenz) liegt, wird auf den Gleichanteil, sowie die Grundfrequenz aufgeteilt. Du kannst mit dem Ergebnis dann nur aussagen, dass die Transformierte Frequenz irgendwo zwischen 0 und Grundfrequenz liegt. Kommmst Du an Bücher ran? Unibibliothek oder ähnliches? Würd dir folgendes empfehlen: FFT für Fußgänger. Der Autor macht manchmal zu wenig zwischenschritte, aber mit ein bisschen Hirnschmalz kann man das kompensieren ;-)
Florian H. wrote: > Reichen mir 255 * 11Hz um das Signal akkustisch annehmbar wieder zurück > zu wandeln und aus zu geben? Wo liegt die Grenze der "Spaltenbreite" und > wie wird das Fachtechnisch genannt? Durch die DFT/FFT verlierst du keine Informationen. Wenn dein Signal 256 Samples lang ist, dann kannst du es aus einer 256-Punkt-FFT wieder perfekt rekonstruieren. Wenn dein Signal laenger als 256 Samples ist, dann kannst du es in Bloecke aufteilen, die FFTs auf die Bloecke anwenden, und aus diesen FFT-Bloecken wieder das Originalsignal wiederherstellen. Nennt sich Overlap-Add-Methode oder DFT-Filterbank. In der Realitaet ist es ein bisschen komplizierter, es gibt nicht umsonst ganze Buecher zu dem Thema. Z.B.: http://ccrma.stanford.edu/~jos/sasp/sasp.html
Entschuldige, aber man kann beispielsweise ein Rechtecksignal wegen des Gibb'schen Überschwingers nie wieder perfekt rekonstruieren ;-) Theoretisch bräuchte man unendlich viele Harmonische für die Rekonstruktion. Die Abweichung des rekonstruierten Rechtecksignals geht gegen einen bestimmten Wert der nicht Null ist. Allgemein gilt: Je unstetiger das Ausgangssignal, desto stärker ist die Abweichung des rekonstruierten Signals. Bei stetigen Verläufen dagegen ist die Rekonstruktion besser möglich. Je mehr der Verlauf einem Sinus ähnelt, desto besser das Ergebnis. Gruß
Es geht doch um zeitdiskrete Signale, da gibt es kein stetig oder unstetig. Egal was du in die FFT reinsteckst, nach der IFFT kommt wieder das selbe raus.
Nein ;-) Denk mal dran, dass das Signal immer irgendwo abgeschnitten wird und somit eine Unstetigkeit auftreten wird,
Nochmal, es geht um zeitdiskrete Signale, da gibt es kein stetig oder unstetig. Ein zeitdiskretes, periodisches Signal mit N Freiheitsgraden wird durch durch ein diskretes, periodisches Spektrum mit N Freiheitsgraden vollstaendig beschrieben. Mit der DFT kann man zwischen diesen Darstellungen transformieren, nichts weiter. Wenn du das Signal in den Frequenzbereich transformierst, das Spektrum abschneidest, und es wieder zurueck transformierst, DANN tritt der Effekt auf den du beschrieben hast (Gibbs-Effekt). Die DFT trifft aber keine Schuld.
Ich störe den kleinen Diskurs nur ungerne. ;) Zum Test habe ich mal in Excel (kein MatLab greifbar) einen Sinus gebastelt und dessen Werte durch die FFT gejagt. Folgendes Szenario: Der Sinus hat 128 Werte und schwingt in diesem Zeitraum 4 mal mit voller Peroide. Nach der FFT habe ich die Werte durch 2 geteilt und lasse mir nur die Hälfte der Werte anzeigen. (Wegen Spiegelung ab dem 64 Wert) Nun tritt bei "Spalte" 5 ein Maximum auf, mit leichten Erhöhungen in den Werten drum rum. Meine Überlegung ist nun die: Nehmen wir an das ein Sample 1 ms entspricht. Dann ist mein Fenster 128ms oder 0.128 Sekunden lang. 1/0,128 = 7,8125. Das müsste doch dann die Grundfreuqenz sein, oder? Alle weiteren N sind Vielfache dieser GF (die Harmonischen). Also müßte 5*7,8125 = 39 HZ doch der Frequenz meines Sinus entsprechen... Nur wenn ich 0.128 durch 4 Teile und 1 durch das Ergebnis dividiere, erhalten ich 31,25 Hz für meinen Sinus... Mache ich einen Denkfehler? Ok... Ich habe mir die Excel Sache noch mal angesehen. Meine Datenreihe für den Sinus beginnt bei 0 und hat dort den Wert 0. Mein Maximum rutscht natürlich auf 4 wenn ich diesen ersten Wert weglasse. Logisch... Nur warum darf ich den nicht mit zählen... Ah ok... ich ahne es... Ok, dann müsste das ja beliebig gut funzen... Werde morgen mal weiter testen und die Excel Datei rein stellen wenn Interesse besteht. Nacht ;) Florian
Ääääääääääääääääähm... Kann es sein das mein N0, also mein erstes N der von Marius weiter oben erwähnte Gleichanteil ist?! :D Also wäre N1 meine Grundfrequenz? Florian
Andreas Schwarz wrote: > Es geht doch um zeitdiskrete Signale, da gibt es kein stetig oder > unstetig. Egal was du in die FFT reinsteckst, nach der IFFT kommt wieder > das selbe raus. Wenn dein Signal perfekt bandbegrenzt ist, dann ja. Wenn nicht, dann bekommst du garantiert nicht das selbe Signal zurück (Leakage ist bei einer zeitbegrenzten, diskreten FT immer vorhanden). In der Praxis kann und muss man diese Abbweichungen jedoch vernachlässigen. http://www.diru-beze.de/signale/skripte/SuS_SS05/fft-dft.pdf
Florian H. wrote: > Ääääääääääääääääähm... > Kann es sein das mein N0, also mein erstes N der von Marius weiter oben > erwähnte Gleichanteil ist?! :D > Also wäre N1 meine Grundfrequenz? > > Florian In der Tat, n0 ist dein Gleichanteil (f = 0). Die erste natürliche Frequenz ist bei n1 zu finden.
Die DFT ist eine orthogonale Transformation von einem N-dimensionalen Vektor in einen N-dimensionalen Vektor, dabei kann nichts verloren gehen. Was bei der Abtastung passiert ist schon wieder eine ganz andere Sache.
Hmmm....dann erkläre mir bitte wie ich aus einem Signal, welches (beispielsweise) knapp unter der Grundfrequenz liegt hin- und zurücktransformiere, so dass das Signal wie vorher aussieht... ;-)
Indem du erst die DFT und dann die IDFT anwendest... probier's doch einfach aus.
Ok, angenommen die Frequenz meines Signals ist Grundfrequenz/2... FFT --> Amplitude des Signals wird zu gleichen Teilen auf Gleichanteil und Grundfrequenz aufgeteilt... IFFT--> Ich bekomme einen um den Gleichanteil verschobene Schwingung mit Frequenz = Grundfrequenz Wenn ich da einen Denkfehler habe, klär mich bitte auf. Ich danke im Voraus
Marius wrote: > Ok, angenommen die Frequenz meines Signals ist Grundfrequenz/2... > > FFT --> Amplitude des Signals wird zu gleichen Teilen auf Gleichanteil > und Grundfrequenz aufgeteilt... Da ist der Denkfehler. Wenn das Signal ein Sinus mit der halben Grundfrequenz ist, dann sieht die DFT nur eine halbe Periode des Sinus. Wenn du dir die periodisch fortgesetzt vorstellst, dann ist das kein Sinus mehr, sondern etwas das noch diverse andere Frequenzanteile enthaelt. Darum bekommst du ein "verschmiertes" Spektrum (genauer, ein mit dem Spektrum des Rechteckfensters gefaltetes). Das stoert die IDFT aber nicht; solange du an dem Spektrum nichts aenderst kommt nach der Ruecktransformation wieder exakt das selbe heraus.
Von der Seite stimmts...aber mein Signal, mit Grundfrequenz/2 wird nicht korrekt dargestellt...darauf will ich hinaus. Immer wenn eine Frequenz zwischen den Vielfachen "erwischt" wird, kommt ein falsches Ergebnis raus...Stichwort: leakage
Was ist "falsch"? Dass das Ergebnis der DFT nicht notwendigerweise genauso aussieht wie das Spektrum des kontinuierlichen Signals aus dem du das Stueck fuer die DFT ausgeschnitten hast sollte klar sein. Das DFT-Spektrum kann nur das darstellen was du reinsteckst, nicht mehr.
Hmmm....dann erkläre mir bitte wie ich aus einem Signal, welches (beispielsweise) knapp unter der Grundfrequenz liegt hin- und zurücktransformiere, so dass das Signal wie vorher aussieht... ;-) -> Wenn ein Signal knapp unter der Grundfrequenz liegt, dann reicht der Beobachtungszeitraum gar nicht aus, um diese Frequenz vollständig zu erfassen. Bsp: fs = 500. N = 6550. Grundfrequenz = fs/6550 = 0,076 Beobachtungszeitraum = 1/0.076 = 13 Das heisst du musst mindestens 13 Sekunden beobachten, um diese Frequenz (0,076Hz) vollständig zu erfassen. Sollte nun die Frequenz unter der Grundfrequenz liegen, heisst das die Frequenz wurde nicht vollständig erfasst und kann demzufolge auch nicht rekonstruiert werden. Bsp. Grundfrequenz = 0,05Hz Beobachtungszeitraum = 1/0,05Hz = 20 An einem Sinus sieht man die Auswirkung dann. Der Sinus wird mitten in seiner Schwingung abgeschnitten. Diese Fensterung kann man durch eine Multiplikation mit einem Rechtecksignal(obwohl es das ja gar nicht gibt;)) ausdrücken. Das heisst im Frequ-Bereich ist das eine Faltung... Eine weitere Erklärung ist: Bei der DFT wird ein Signal im Zeitbereich periodifiziert. Das geschieht durch das diskrete Spektrum (Abtastung führt zu Periodifizierung im jeweils anderen Bereich). Das heisst, das Signal was man vermeintlich zur Transformation übergibt ist nicht das Signal. Die meisten Anwender vergessen einfach den Sachverhalt, dass im Frequenzbereich ebenfalls ein abgetastetes also diskretes Signal steht. Deshalb sollte man immer darauf achten, dass das Zeitsignal periodifizierbar ist ohne Sprünge zu erzeugen. Um auf das Beispiel mit der nicht vollständig erfassten Frequenz zurückzukommen: Es bedeutet ganz einfach, dass der Sinus mitten in der Periode abgeschnitten wurde, durch die Periodifizierung aber ein Sprung (also zusätzliche Frequenzen) erzeugt wurden. Wenn man den Beobachtungszeitraum nun ausdehnt, um diese Frequenz genau zu erfassen, dann erhält man auch sein Originalsignal wieder. Dasselbe tritt auf, wenn man eine Sinushalbwelle transformiert. Auch hier wird durch die Periodifizierung ein Sprung erzeugt. Man darf nie den Fehler machen und Zeit- und Frequenzbereich getrennt betrachten. Sie gehören IMMER zusammen. Noch etwas zu unstetigen Signalen, die ein Voredner erwähnt hat: Ein unstetiges Signal gibt es eigentlich nur im kontinuierlichen Fall. Und da verletzt es eine Bedingung, um überhaupt mit FT transformiert werden zu dürfen.
Jan wrote: > Hmmm....dann erkläre mir bitte wie ich aus einem Signal, welches > (beispielsweise) knapp unter der Grundfrequenz liegt hin- und > zurücktransformiere, so dass das Signal wie vorher aussieht... > ;-) > > -> Wenn ein Signal knapp unter der Grundfrequenz liegt, dann reicht der > Beobachtungszeitraum gar nicht aus, um diese Frequenz vollständig zu > erfassen. Was verstehst du unter "vollständig erfassen"? Die FFT arbeitet auf einer Folge von Abtastwerten. Ob und wie diese Abtastwerte irgend ein physikalisches Signal repräsentieren interessiert die FFT nicht. Fakt ist, x = IFFT(FFT(x)), für alle x in C^N. Ob x eine bezogen auf die Periodendauer "lange" Folge von Abtastwerten ist, oder nur ein 2-Punkte-Ausschnitt einer "langsamen" Schwingung, nach Transformation und Rücktransformation kommt exakt das selbe raus das man reingesteckt hat.
@Florian H.: Du schreibst, dass du in Excel eine FFT gemacht hast. Könntest du mir bitte mal verraten wie das geht? Hast du da das integrierte FFT-Makro verwendet oder selber was gebastelt? Ich suche schon lange nach einem einigermassen verständlichen, funktionierenden FFT-Code, den ich selber auch mal irgendwo implementieren kann. Vlt. wär das Excel-Sheet noch ganz hilfreich, könntest du es nicht mal hier posten? Grüsse
@Andreas Schwarz Ich wollte damit auch nicht sagen, dass die FFT was anderes liefert. Es ging mir darum, dass eine Frequenz die unter der Grundfrequenz liegt zu gering ist um vollständig um Beobachtungszeitraum zu liegen. Anders ausgedrückt: Ein Sinus (angenommen ein Signal schwingt tatsächlich so) mit der Frequenz 1Hz nur über 0,8 Sekunden beobachtet bei einer Abtastrate von ca 1000Hz und dann transformiert, läßt die Frequenz 1Hz nicht erkennen, da die Frequenzauflösung = 1000 / 800 = 1,25Hz beträgt. Wenn man das Signal nun aber länger beobachtet (oder aufnimmt) kann man die Frequenz auch im Spektrum ablesen. Natürlich wird das bei 1,1 Sekunden auch wieder schwierig, da: 1000 / 1100 = 0,909Hz. Allerdings ist auch hier die Schwingung mittendrin abgeschnitten. Ich gebe zu der Satz: "Sollte nun die Frequenz unter der Grundfrequenz liegen, heisst das die Frequenz wurde nicht vollständig erfasst und kann demzufolge auch nicht rekonstruiert werden." ist so nicht richtig. Denn das Signal wird ja rekonstruiert. Allerdings aus anderen Frequenzen als die vermeintlich in der Realität vorhandenen. Es gibt nur Probleme, wenn man das Spektrum beeinflusst, denn die tatsächlichen Frequenzen im Signal sind ja nicht zwangsläufig sichtbar. Stichworte Rechteckfenster und Leckeffeckt. Das Abschneiden des Sinus mitten in der Schwingung verhindert ja eine vernünftige Periodifizierung, sodass dieses Signal kein Sinus mehr ist, also ein Signal erzeugt wurde, dass mittendrin einen Sprung auf bspw Null durchführt und somit weitere andere Frequenzen erzeugt, die sich als Leckeffeckt bemerkbar machen. Ich glaube in der Wikipedia ist ein kurzer Artikel zum Leckeffeckt mit einigen Bildern vorhanden...
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.