Jak zaprojektować bardzo wąski filtr?

15

Załóżmy, że mam próbkę sygnału audio o częstotliwości Hz i chciałbym zaprojektować filtr dolnoprzepustowy, który izoluje wszystko poniżej ~ Hz. W świecie cyfrowym jest to filtr dolnoprzepustowy z pasmem w . Pasmo przejściowe również powinno być rozsądne. Zbudowanie do tego filtru FIR może mieć wiele zaczepów, co w dłuższej perspektywie wpływa na precyzję. Filtr IIR nie jest zbyt idealny, ponieważ dźwięk cierpi na nieliniową odpowiedź fazową w filtrach, więc jeśli sygnał nie zostanie przefiltrowany, a następnie odwrócony i ponownie przefiltrowany, nie jest tak naprawdę opcją.4800060[-π400,π400]

Czy transformacja falkowa może być w tym lepsza niż zwykłe filtrowanie za jednym razem?

Phonon
źródło
Czy istnieje powód, dla którego nie chcesz zdziesiątkować?
Lorem Ipsum
Nie, dziesiątkowanie jest w porządku, o ile dostaję to, czego chcę.
Phonon
1
Co to jest „rozsądne” pasmo przejściowe? To określi kolejność twojego filtra. Jeśli na przykład pasmo zaczyna się przy 300 Hz, prawdopodobnie jesteś w dobrej formie. Jeśli chcesz uzyskać wysokie tłumienie przy częstotliwości 60,1 Hz, będzie ono długie. Długie filtry FIR niekoniecznie są złe,
Jason R
5
Potrzebujesz rzeczywistej specyfikacji filtra, w przeciwnym razie pytanie nie ma znaczenia. Podaj dopuszczalne tętnienie pasma przepustowego, odrzucenie pasma zatrzymania, szerokość pasma przejściowego itp.
Paul R
Ma sens. Zrobię
Phonon

Odpowiedzi:

20

Jeśli optymalizujesz czas inżynierii i jesteś na platformie, która dobrze obsługuje duże FFT (nie jestem stałym punktem), skorzystaj z porady hotpaw2 i użyj szybkiego konwolucji . Będzie działać znacznie lepiej niż naiwne wdrożenie FIR i powinno być stosunkowo łatwe do wdrożenia.

Z drugiej strony, jeśli masz trochę czasu na to, aby uzyskać najlepszą implementację lub jesteś na platformie z punktem stałym, powinieneś użyć wielowierszowej struktury filtrowania w górę i odejmowania. Ale trochę trudniej jest wszystko naprawić.

Mam dostęp do zaufanych i wysoce zoptymalizowanych implementacji narzędzi do szybkiego konwolucji i filtrowania wielowirnikowego. Szybki splot zajmuje około 3 razy dłużej, aby uzyskać równoważną wydajność sygnału w porównaniu ze strukturą wielopasmową. Co więcej, nawet na platformie zmiennoprzecinkowej. Luka znacznie się powiększy w stałym punkcie dsp.

W ogólnych warunkach:

Konwersja w dół:

Użyj 8 stopni półpasmowych filtrów dziesiętnych na 2, aby przekształcić sygnał 48 kHz w sygnał 187,5 Hz. Pierwszy etap tego próbkowania w dół może mieć bardzo szerokie pasmo przejściowe, pozwalając na alias energii, o ile nie aliasuje z powrotem do zakresu poniżej 60 Hz. W miarę postępu etapów liczba kranów musi się zwiększać, ale będą one stosowane przy stopniowo malejących częstotliwościach próbkowania, więc całkowity koszt każdego etapu pozostaje niewielki.

Filtracja:

Przeprowadź dokładne filtrowanie wokół 60 Hz mc, aby zachować energię, którą ostatecznie chcesz odjąć. Filtrowanie z małą szybkością ma podwójną zaletę:

  1. Szerokość pasma przejściowego 1 Hz jest 256 razy większa pod względem częstotliwości cyfrowej przy niskiej częstotliwości w stosunku do pierwotnej. Dlatego każde dotknięcie filtra ma 256 razy większą moc.
  2. Sam sygnał ma niższą częstotliwość, więc filtr musi przetworzyć tylko 1/256 danych.

Konwersja w górę:

Zasadniczo jest to odwrotność etapów dziesiętnych. Każdy z 8 stopni interpolatora podwaja szybkość, szacując próbkę, która przechodzi między kolejnymi próbkami wejściowymi. Pasmo przejściowe staje się szersze wraz ze wzrostem częstotliwości próbkowania.

Odejmować:

Odejmij swój filtrowany dolnoprzepustowy sygnał o pełnej szybkości od sygnału oryginalnego. Jeśli odpowiednio dostosowałeś wszystkie opóźnienia grupowe, ogólną strukturą będzie filtr górnoprzepustowy z wąską przepustowością przejścia.

Mark Borgerding
źródło
To fantastyczna odpowiedź. Czy mogę prosić o komentarze na temat tego postu? dsp.stackexchange.com/questions/29655/…
richieqianle
6

Wypróbuj nakładający się filtr dodawania / zapisywania z najdłuższym FFT / IFFT, który pasuje do twoich opóźnień i ograniczeń wydajności obliczeniowej. Przy projektowaniu tej metody z jeszcze dłuższymi FFT można zaprojektować wyjątkowo długie filtry FIR.

Jeśli możesz FFT cały utwór lub cały plik sygnału audio, w jednym bardzo długim FFT + IFFT (istnieją specjalne algorytmy FFT dla długich wektorów, które nie mieszczą się w pamięci podręcznej ani pamięci RAM), nie musisz wykonywać żadnych nakładanie przetwarzania dodawania / zapisywania, i można uzyskać bardzo wąskie pasmo przejściowe.

hotpaw2
źródło
4

Istnieją dwie możliwości: FIR i IIR. Jak już wspomniano, FIR wymaga odpowiedzi impulsowej BARDZO długiej (1000 uderzeń) i jest kosztowny pod względem pamięci, MIPS i opóźnienie z nakładaniem / dodawaniem są najbardziej wydajnym wyborem. Opóźnienie może jednak stanowić poważny problem. Jeśli chcesz wykorzystać to jako górnoprzepustowe dla subwoofera kina domowego, opóźnienie będzie tak duże, że stracisz synchronizację ruchu warg z wideo.

IIR jest o kilka rzędów wielkości tańszy i dlatego często stosowany. Rzeczywiście ma niepłaską odpowiedź fazową, ale w wielu przypadkach nie stanowi to problemu lub można go obejść. Na przykład, jeśli potrzebujesz filtra górnoprzepustowego do ochrony głośników basowych, odpowiedź fazowa nie jest bardzo ważna, ponieważ ogólna odpowiedź fazowa systemu jest zdominowana przez głośnik, obudowę i akustykę w pomieszczeniu. Filtr odgrywa tutaj tylko niewielką rolę. W wielu przypadkach należy również zachować fazę „względną”, a nie fazę absolutną. Powiedzmy, że chcesz zastosować górnoprzepustowy sygnał A, ale nie sygnał B, możesz po prostu ustawić pasujący allpass na sygnał B, aby względna faza A i B pozostała taka sama. Całkowite opóźnienie i opóźnienie grupowe tego podejścia jest nadal znacznie mniejsze niż w przypadku metody FIR.

Hilmar
źródło