Jestem całkiem nowicjuszem w przetwarzaniu sygnałów i wiem, że to pytanie może być zbyt ogólne. Ale nadal chciałbym usłyszeć wskazówki od ekspertów.
Nauczono mnie używać butter
(do projektowania filtra Butterwortha, czyli maksymalnie płaskiego filtra wielkości) i filtfilt
(cyfrowego filtrowania w fazie zerowej) funkcji filtrowania pasmowego sygnałów EEG (elektroencefalogramu) w trybie MATLAB offline (tj. Po zakończeniu nagrywania). W ten sposób można uniknąć nieuchronnego „opóźnienia” spowodowanego przez filtr cyfrowy (tj. Filtrowanie fazy zerowej).
Następnie ktoś zapytał mnie, dlaczego nie możemy użyć fft
(szybkiej transformacji Fouriera) do uzyskania reprezentacji sygnału w dziedzinie częstotliwości, a następnie ustawić moc niepożądanych częstotliwości na zero, a następnie ifft
(odwrotna szybka transformata Fouriera) w celu odzyskania przefiltrowanych danych w czasie domena w tym samym celu. Ta manipulacja w dziedzinie częstotliwości brzmiała dla mnie prostiej i rozsądniej, i tak naprawdę nie mogłem odpowiedzieć na pytanie dlaczego.
Jakie są zalety i wady korzystania z prostej fft/ifft
metody filtrowania pasmowoprzepustowego? Dlaczego ludzie wolą używać filtrów cyfrowych FIR lub IIR?
Na przykład, czy fft/ifft
metoda jest bardziej podatna na wycieki widmowe lub tętnienia w porównaniu z ustalonymi filtrami cyfrowymi? Czy metoda ma również opóźnienie fazowe? Czy istnieje sposób na wizualizację odpowiedzi impulsowej dla tej metody filtrowania do porównania?
źródło
Odpowiedzi:
Głównym powodem, dla którego przetwarzanie w dziedzinie częstotliwości nie jest wykonywane bezpośrednio, jest opóźnienie. Aby wykonać, powiedzmy, FFT na sygnale, musisz najpierw zarejestrować cały sygnał w dziedzinie czasu, zaczynając do końca, zanim będziesz mógł go przekonwertować na domenę częstotliwości. Następnie możesz wykonać przetwarzanie, przekonwertować go z powrotem do dziedziny czasu i odtworzyć wynik. Nawet jeśli dwie konwersje i przetwarzanie sygnału w środku są efektywne natychmiastowo, nie otrzymujesz pierwszej próbki wyniku, dopóki ostatnia próbka wejściowa nie zostanie zarejestrowana. Ale możesz uzyskać „idealne” wyniki w dziedzinie częstotliwości, jeśli chcesz to znieść. Na przykład 3-minutowa piosenka nagrana z prędkością 44100 próbek na sekundę wymagałaby przeprowadzenia transformacji 8 milionów punktów, ale w przypadku nowoczesnego procesora nie jest to wielka sprawa.
Możesz pokusić się o rozbicie sygnału w dziedzinie czasu na mniejsze bloki danych o stałej wielkości i przetwarzanie ich indywidualnie, zmniejszając opóźnienie do długości bloku. Nie działa to jednak z powodu „efektów krawędziowych” - próbki na obu końcach danego bloku nie będą poprawnie zrównywać się z odpowiednimi próbkami sąsiednich bloków, tworząc w wyniku niepożądane artefakty.
Dzieje się tak z powodu założeń, które są niejawne w procesie konwersji między dziedziną czasu a dziedziną częstotliwości (i odwrotnie). Na przykład FFT i IFFT „zakładają”, że dane są cykliczne; innymi słowy, bloki identycznych danych w dziedzinie czasu pojawiają się przed i po przetworzeniu bloku. Ponieważ ogólnie nie jest to prawdą, otrzymujesz artefakty.
Przetwarzanie w dziedzinie czasu może mieć swoje problemy, ale fakt, że możesz kontrolować opóźnienie i nie generuje on okresowych artefaktów, czyni go wyraźnym zwycięzcą w większości aplikacji do przetwarzania sygnałów w czasie rzeczywistym.
(To jest rozszerzona wersja mojej poprzedniej odpowiedzi .)
źródło
Z pewnością możesz użyć idealnych filtrów „boxcar” w dziedzinie częstotliwości. Dwoistość mówi, że jest to równoważne zwojowi z funkcją sinc o nieskończonej długości. Aby zmniejszyć artefakty związane z ograniczeniem długości, funkcja sinc jest często mnożona przez okno. Być może słyszałeś o Hammingu, Hanningu (właściwie von Hann), wychowaniu cosinusa i innych technikach okienkowania. Splot może być obliczeniowo prostszy niż podejście fft / ifft, ale odpowiedzi są takie same.
Każda metoda będzie miała plusy i minusy. Butterworth to IIR, a wagony towarowe to FIR. Butterworthy są prawdopodobnie bardziej płaskie w paśmie podania, ale prawdopodobnie z mniej stromym stoczeniem, w zależności od kolejności IIR i szerokości FIR. Filtfilt byłby trudniejszy do wdrożenia w czasie rzeczywistym.
źródło
Powiązane pytania
Dlaczego filtrowanie przez zerowanie pojemników FFT jest złym pomysłem? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins
Usunąć wartości z wyniku FFT tak samo jak filtrowanie? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1
Dlaczego używamy okna w dziedzinie czasu zamiast FFT modyfikować widmo, a nie odwrotnie FFT /signals/8911/why-do-we-use-window-in-time-domain-rather -than-do-fft-modyfikuj-widmo-i-n? noredirect = 1 i lq = 1
źródło