Ich bin ein Anfänger in der Signalverarbeitung und ich weiß, dass diese Frage zu weit gefasst sein kann. Aber ich würde immer noch gerne Hinweise von Experten hören.
Mir wurde beigebracht, die Funktionen butter
(Butterworth-Filter, auch bekannt als Filter mit maximal flacher Größe) und filtfilt
(Nullphasen-Digitalfilterung) für die Bandpassfilterung von EEG-Signalen (Elektroenzephalogramm) in MATLAB offline (dh nach Abschluss der Aufzeichnung) zu verwenden. Auf diese Weise können Sie unvermeidliche "Verzögerungen" vermeiden, die durch das Digitalfilter (dh Nullphasenfilterung) verursacht werden.
Dann fragte mich jemand, warum wir fft
die Frequenzdomänendarstellung des Signals nicht mit (schnelle Fouriertransformation) erhalten und dann die Leistung unerwünschter Frequenzen auf Null setzen können, gefolgt von ifft
(inverse schnelle Fouriertransformation), um die gefilterten Daten rechtzeitig wiederherzustellen Domain für den gleichen Zweck. Diese Manipulation im Frequenzbereich klang für mich einfacher und vernünftiger, und ich konnte nicht wirklich antworten, warum.
Was sind die Vor- und Nachteile der einfachen fft/ifft
Methode zur Bandpassfilterung? Warum bevorzugen Menschen digitale FIR- oder IIR-Filter?
Ist das fft/ifft
Verfahren beispielsweise anfälliger für spektrale Streuungen oder Welligkeiten im Vergleich zu den etablierten digitalen Filtern? Leidet das Verfahren auch unter Phasenverzögerung? Gibt es eine Möglichkeit, die Impulsantwort für diese Filtermethode zum Vergleich zu visualisieren?
quelle
Antworten:
Der Hauptgrund, warum die Frequenzdomänenverarbeitung nicht direkt durchgeführt wird, ist die damit verbundene Latenz. Um beispielsweise eine FFT für ein Signal zu erstellen, müssen Sie zuerst das gesamte Zeitbereichssignal von Anfang bis Ende aufzeichnen, bevor Sie es in einen Frequenzbereich konvertieren können. Anschließend können Sie die Verarbeitung durchführen, sie zurück in den Zeitbereich konvertieren und das Ergebnis wiedergeben. Auch wenn die beiden Konvertierungen und die Signalverarbeitung in der Mitte tatsächlich sofort erfolgen, erhalten Sie das erste Ergebnis-Sample erst, wenn das letzte Eingangs-Sample aufgenommen wurde. Sie können jedoch "ideale" Frequenzbereichsergebnisse erzielen, wenn Sie dies in Kauf nehmen möchten. Zum Beispiel würde ein 3-minütiger Song, der mit 44100 Samples / Sekunde aufgenommen wurde, 8 Millionen Punkttransformationen erfordern, aber das ist bei einer modernen CPU keine große Sache.
Sie könnten versucht sein, das Zeitdomänensignal in kleinere Datenblöcke mit fester Größe zu unterteilen und diese einzeln zu verarbeiten, um die Latenz auf die Länge eines Blocks zu reduzieren. Dies funktioniert jedoch aufgrund von "Kanteneffekten" nicht - die Samples an beiden Enden eines bestimmten Blocks werden nicht ordnungsgemäß mit den entsprechenden Samples der benachbarten Blöcke ausgerichtet, was zu störenden Artefakten in den Ergebnissen führt.
Dies geschieht aufgrund von Annahmen, die in dem Prozess impliziert sind, der zwischen dem Zeitbereich und dem Frequenzbereich konvertiert (und umgekehrt). Beispielsweise "nehmen" die FFT und die IFFT an, dass die Daten zyklisch sind; mit anderen Worten, die Blöcke mit identischen Zeitbereichsdaten kommen vor und nach dem Block, der verarbeitet wird. Da dies im Allgemeinen nicht zutrifft, erhalten Sie die Artefakte.
Die Verarbeitung in der Zeitdomäne kann Probleme bereiten, aber die Tatsache, dass Sie die Latenz steuern können und keine periodischen Artefakte auftreten, macht sie in den meisten Echtzeit-Signalverarbeitungsanwendungen zu einem klaren Gewinner.
(Dies ist eine erweiterte Version meiner vorherigen Antwort .)
quelle
Sie können durchaus "Boxcar" -Idealfilter im Frequenzbereich verwenden. Die Dualität sagt, dass dies einer Faltung mit einer Sinusfunktion von unendlicher Länge entspricht. Um Artefakte zu reduzieren, die mit der Endlichkeit der Länge verbunden sind, wird die sinc-Funktion häufig mit einem Fenster multipliziert. Sie haben vielleicht von Hamming, Hanning (eigentlich von Hann), Raised Cosine und anderen Fenstertechniken gehört. Die Faltung mag rechnerisch einfacher sein als der fft / ifft-Ansatz, aber die Antworten sind die gleichen.
Jede Methode hat Vor- und Nachteile. Der Butterworth ist IIR, und die Güterwagen sind FIR. Die Butterworths sind wahrscheinlich flacher im Passband, aber wahrscheinlich mit weniger steilem Rolloff, abhängig von der Reihenfolge des IIR und der Breite der FIR. filtfilt wäre schwieriger in echtzeit umzusetzen.
quelle
Verwandte Fragen
Warum ist es eine schlechte Idee, FFT-Bins auf Null zu setzen? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins
Werte aus der FFT entfernen wie filtern? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1
Warum verwenden wir Fenster im Zeitbereich, anstatt das Spektrum durch FFT zu modifizieren und nicht durch inverse FFT ? -als-do-fft-das-Spektrum-modifizieren-und-t? noredirect = 1 & lq = 1
quelle