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?


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


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.