Hallo, ich habe eine Frage zur fft mit einem PIC32 Controller. Ich möchte ein Audiosignal auf die enthaltenen Frequenzen und deren zugehörigen Amplituden auswerten. Ich sample mit 20kHz und mache eine fft mit 128 Werten. Somit ergeben sich Filterbreiten von 20kHz/128 = 156,25Hz und eine Dauer für das Einlesen von 128 Werten von (20kHz)^-1 * 128 = 6,4ms. Sehe ich das richtig, dass ich grundsätzlich erst 128 neue Werte vom ADC einlesen mumss, bevor ich die fft erneut berechne? Ich verstehe das so, dass ich hierbei nur die Amplitude der jeweiligen Frequenz im Abstand 6,4ms erhalte, nachdem der ADC den Eingangspuffer erneut gefüllt ist. Somit kann ich niemals eine schmalere Filterbandbreite erhalten, wenn ich bei dieser max. Zeit oder schneller sein möchte. Kann dies jemand bestätigen oder wende ich die fft falsch an, dass ich z.B. den Eingangspuffer nach links schieben könnte und z.B. 10 neue Werte von rechts einfügen kann zur erneuten Berechnung? (Oder benötige ich immer 128 neue Werte)?
1. FFT und Fensterung Du nimmst ja nur einen gewissen Ausschnitt Deiner Eingangsfolge. Mathematisch entspricht dies einer Multiplikation mit einer Rechteckfunktion. Im Frequenzbereich wird daraus eine Faltung mit einer sinc()-Funktion, d.h. Dein Spektrum wird verfälscht. Um das zu vermeiden, musst Du Deinen Datenblock im Zeitbereich mit einer anderen Fensterfunktion multiplizieren. Stichwort: Hamming und Hanning Fenterfunktionen. Siehe google. 2. FFT und schnelle Faltung Wenn Du Dein Signal im Frequenzbereich filtern und dann wieder in den Zeitbereich transformieren wolltest, würde Dein Verfahren so nicht funktionieren. Die Standardverfahren hier heißen Overlap-Add und Overlap-Save. Google oder ein gutes Buch hilft hier weiter. Da Du Deine Spektren aber nicht wieder zurücktransformieren willst, kannst Du auch mit nicht überlappenden Datenblöcken arbeiten. Deine zeitliche Auflösung sinkt dann natürlich.
>Ich sample mit 20kHz und mache eine fft mit 128 Werten. Somit ergeben >sich Filterbreiten von 20kHz/128 = 156,25Hz Falsch. Du bekommst 64 verwertbare Werte. >Sehe ich das richtig, dass ich grundsätzlich erst 128 neue Werte vom ADC >einlesen mumss, bevor ich die fft erneut berechne? Nö, musst du nicht. Niemand hindert dich daran deine FFT mit zwei weggeworfenen und zwei neuen Samples zu berechnen. >(Oder benötige ich immer 128 neue Werte)? Nein.
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.