FFT
-
Ich kann mich zwar daran erinnern, dass es mal Themen bezüglich FFT hier gab, aber die Suche spuckt 0 Resultate aus
Naja, jedenfalls habe ich ein paar Fragen zu FFT und muss vorher anmerken, dass ich kaum Ahnung von Komplexen Zahlen habe.
Gehen wir mal davon aus, ich möchte die Samples von einem Mikrofon erfassen. Die Abtastrate(=Samplingrate) beträgt 4096 Hz also 4096 Samples pro Sekunde.
Laut http://www.inf.fh-flensburg.de/lang/algorithmen/fft/fft.htm erwartet die FFT Funktion ein Array a mit Komplexen Werten und die N-te Einheitswurzel w.
a[Index].Real = Sample[Index]
a[Index].Imaginär = 0
w.Real = cos(360°/4096)
w.Imaginär = sin(360°/4096)
Ist das erst einmal richtig?Wenn man dann die Funktion FFT aufgerufen hat, was steht anschließend in dem Array? Die Koeffizienten der Summierten Sinusfunktionen von 0 bis 4095 Hz?
mfg olli
-
Das könnte man so sagen. Die Bedeutung eines Array-Elements ist wesentlich komplexer als nur eine Sinus-Schwingung mit einer bestimmten Frequenz zu sein, da wir hier die diskrete FT vorliegen haben - Deine Aussage stimmt nur für die kontinuierliche FT, bei der diskreten FT enthält ein Array-Element die Energie von mehreren Frequenzen.
Ich empfehle meistens dies hier zu lesen: http://www.baeckmann.de/pdf/DFT.pdf
Apropos Suche:
-
Marc++us, ich danke dir für das PDF - ich habe es heute auch auf Arbeit mehrmals versucht zu verstehen, aber ich steige da nicht durch.
Ich brauche um genau zu sein die Oberton-Frequenz der Stimme. Dachte mir also ganz stupide, dass ich FFT benutze, das 2-5 MHz Band auswerte und aus allen Frequenzen in dem Band die Durchschnitts-Frequenz ermittle.
FFT habe ich so verstanden, dass es das selbe ist, wie DFT, bloß schneller, weil da eine Art Quicksort dahinter steckt.
Und laut Wikipedia kann ich mit DFT folgendes ermitteln:
- zur Bestimmung der in einem abgetasteten Signal hauptsächlich vorkommenden Frequenzen,
- zur Bestimmung der einzelnen Amplituden zu diesen Frequenzen
- zur Implementierung digitaler Filter mit großen FilterlängenGilt das denn nicht auch für ein Zeitfenster(wie beispielsweise meine 4096 Samples)?
Habe für Delphi auch einen Code bei Google gefunden. Da gab es folgende Aussage:
Amplitude = Sqrt(a[Index].real² + a[Index].imaginär²)
und die Amplitude gehört der Sinusfunktion mit der Frequenz Index*(Samplingrate/Abtastwerte) Hz. Weiterhin sollte man nur bis zum Index Abtastwerte/2 gehen. Also kann ich bei einer Samplingrate von 4096 auch nur bis 2048 Hz annähernd korrekte Werte erfahren? Index 0 enthält zu dem noch die Gleichspannungsfrequenz oOZur Suche: Ja, dann ist die interne Forumsuche für den A***
mfg olli
-
Vertex schrieb:
FFT habe ich so verstanden, dass es das selbe ist, wie DFT, bloß schneller, weil da eine Art Quicksort dahinter steckt.
Sortiert wird da eigentlich nichts. Die einzige Ähnlichkeit zum Quicksort ist, dass die FFT auch ein "Divide and Conquer"-Algorithmus ist.
-
Also kann ich bei einer Samplingrate von 4096 auch nur bis 2048 Hz annähernd korrekte Werte erfahren?
Noch viel schlimmer, wenn Dein Eingangssignal Frequenzen oberhalb von 2048 Hz enthält, bekommst Du ein hübsches Aliasing und die DFT, FFT was auch immer produziert nur Müll.
Dass man nur bis zum Index Abtastwerte/2 gehen soll, liegt daran, dass Du ein reelles Signal abtastest. Dieses hat ein symmetrisches Spektrum.
Du solltest also wissen, in welchem Frequenzbereich das Mikrofon arbeitet und dann doppelt so schnell abtasten wie die höchste Frequenz (schätze mal im Bereich bis 24kHz).
Ich brauche um genau zu sein die Oberton-Frequenz der Stimme. Dachte mir also ganz stupide, dass ich FFT benutze, das 2-5 MHz Band auswerte und aus allen Frequenzen in dem Band die Durchschnitts-Frequenz ermittle.
Das verstehe ich überhaupt nicht? 2-5 MHZ, das ist Mittelwelle?
Durchschnittsfrequenz = Obertonfrequenz?
Muss man für Obertöne nicht schauen, wo oktavmäßig Peaks im Spektrum sind?
-
Vertex schrieb:
Ich brauche um genau zu sein die Oberton-Frequenz der Stimme.
Obertonfrequenz? Meinst du nicht eher Grundfrequenz der Stimme? Oder andere Frage: was soll die Obertonfrequenz genau sein, harmonische der Grundfrequenz?
-
Ja, ihr habt recht, Grundfrequenz nicht Obertonfrequenz. Kam heute drauf, als ich den Bericht bei Nano(3Sat) über Klangfarbe gesehen habe