Dlaczego powinienem używać filtrów cyfrowych do pasmowania pasm, zamiast po prostu manipulować sygnałami w dziedzinie częstotliwości, a następnie odzyskać je w dziedzinie czasu?

15

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/ifftmetody filtrowania pasmowoprzepustowego? Dlaczego ludzie wolą używać filtrów cyfrowych FIR lub IIR?

Na przykład, czy fft/ifftmetoda 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?

Kouichi C. Nakamura
źródło
Powiązane (ale niekoniecznie duplikowane) pytanie: electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922
Używanie FFT do filtrowania sygnału jest absolutnie prawidłowe, ale jest kilka rzeczy, na które należy zwrócić uwagę. Zobacz podobne pytanie / odpowiedź, aby uzyskać więcej informacji: stackoverflow.com/a/2949227/565542
sbell
5
Takie pytania mogą być bardziej odpowiednie dla witryny przetwarzania sygnałów .
Jason R
2
Myślę, że Steven W. Smith ma Przewodnik naukowca i inżyniera po cyfrowym przetwarzaniu sygnałów . Myślę, że mówi, że próbka w próbce - próbka w próbie jest znacznie wydajniejsza dzięki filtrowi cyfrowemu. Ale istnieje minimalna szerokość okna (64 próbki lub więcej, nie pamiętam dokładnie), kiedy bardziej odpowiednie jest zaimplementowanie konwersji FFT, w której możesz mieć filtr cegieł w domenie freq. Wydajność to nie jedyny problem. Filtr ceglany oznacza, że ​​musisz użyć próbek z przyszłości, co jest niemożliwe w czasie rzeczywistym.
Val
Dzięki, szukałem czegoś w rodzaju strony przetwarzania sygnałów, ale nie mogłem jej znaleźć.
Kouichi C. Nakamura

Odpowiedzi:

9

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 .)

Dave Tweed
źródło
1
Wielkie dzięki za szczegółową odpowiedź w prostych słowach. Teraz widzę, że w moim pytaniu powinienem wspomnieć, że moim zadaniem jest głównie analiza offline, a nie przetwarzanie online lub przetwarzanie w czasie rzeczywistym. Zmienię pytanie. Twoja uwaga jest dość jasna: ponieważ FFT wymaga całego czasu danych, musisz poczekać, aż nagrywanie się zakończy.
Kouichi C. Nakamura
1
OK, w porządku. Pozwolę sobie tylko wskazać jeszcze jedną rzecz dotyczącą filtrowania w dziedzinie częstotliwości, która może, ale nie musi stanowić dla ciebie problemu: filtry nie będą przyczynowe w dziedzinie czasu. Innymi słowy, ich odpowiedzi impulsowe rozciągają się zarówno na czas pozytywny, jak i negatywny. Może to mieć zaskakujące efekty, jeśli nie jesteś tego świadomy.
Dave Tweed
Dzięki. Sprawdziłem „Filtr przyczynowy” na Wikipedii. Z definicji boxcar FFT nie dba o czas, więc widzę, że nie ma związku przyczynowego. Ta natura wyjaśnia, dlaczego nie można go używać do filtrowania w czasie rzeczywistym.
Kouichi C. Nakamura
3
@DaveTweed: Twoje twierdzenie o wymaganiu 8-punktowego FFT w celu odfiltrowania 3-minutowego utworu próbkowanego z częstotliwością 44,1 kHz jest błędne. Algorytmy splotu oparte na FFT są w rzeczywistości szeroko stosowane w praktyce. Metody, takie jak nakładanie-Save i overlap-add są używane tak, że konieczne jest bardziej skromne, rozmiary FFT (a zatem przetwarzanie latencji). Techniki te działają dokładnie tak, jak sugeruje akapit drugi: używaj mniejszych bloków, radząc sobie z „efektami krawędziowymi”, które występują między nimi.
Jason R
2
@DaveTweed: Nie zgadzam się. Metody szybkiego splotu, takie jak zapisywanie nakładania i dodawanie nakładania, są równoważne (do dokładności numerycznej) bezpośredniemu splotowi liniowemu (tj. Implementacji filtra w dziedzinie czasu). Nie ma żadnego kompromisu w wydajności w jakichkolwiek warunkach brzegowych w porównaniu do przetwarzania w dziedzinie czasu, a ich ograniczone opóźnienie nadal czyni je przydatnymi w wielu aplikacjach w czasie rzeczywistym. Twierdzę, że twierdzenie, że filtrowanie w dziedzinie częstotliwości wymaga jednego dużego FFT w całym sygnale wejściowym, jest nieprawdziwe i nie jestem pewien, co rozumiesz przez „czyste” przetwarzanie w dziedzinie częstotliwości w tym kontekście.
Jason R
2

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.

Scott Seidman
źródło
1
Aby uzyskać naprawdę jasne wyjaśnienie okienkowania i filtrowania bloków, zobacz książkę Digital Filters autorstwa RW Hamminga. Dostępne w Dover, więc w bardzo atrakcyjnej cenie. (Nawiasem mówiąc, Scott, myślę, że jest to Hamming, od którego pochodzi nazwa okna, a von Hann to ten, którego nazwisko wymordowano w nazwie jego okna)
Photon
Jestem też prawie pewien, że boxcar zaimplementowany z FFT jest z definicji idealnie płaski w paśmie pasmowym. Kiedy mówimy, że filtr Butterwortha jest „maksymalnie płaski”, myślę, że mówimy o nim wyłącznie w kontekście filtrów przyczynowych (a Wiki twierdzi, że mimo to możliwe jest utworzenie odwrotnego filtra Chebycheva, który będzie bardziej płaski niż Butterwortha).
Photon
1
Uzgodniono idealną nieskończoną długość, ale nie jest to takie pewne po obcięciu i okienkowaniu
Scott Seidman
@ThePhoton Dzięki za korektę Hamminga / von Hann. Nie mogłem poprawnie wyobrazić sobie mojej półki z książkami z domu.
Scott Seidman
@ Photon; Dzięki za książkę filtrów cyfrowych Hamminga . Spojrzałem na to i wydawało się, że zostało napisane specjalnie dla uczniów podstawowych. Kupiłem to z nadzieją. :)
Kouichi C. Nakamura
0

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

Kouichi C. Nakamura
źródło