Jednym ze standardowych sposobów implementacji filtra Butterwortha jest kaskada odcinków drugiego rzędu, z których każdy odpowiada parze złożonych sprzężonych biegunów. Na przykład dla filtra czwartego rzędu byłyby dwie sekcje drugiego rzędu. Jeśli weźmiemy pod uwagę, w jaki sposób lokalizacje biegunów filtra dolnoprzepustowego zmieniają się w płaszczyźnie Z, gdy punkt odcięcia jest zaprojektowany dla bliskiego 0 Hz do Nyquista, ścieżka „zmieciona” przez każdą parę biegunów odpowiada parze łuków wewnątrz okręgu jednostki , jak pokazano na poniższym rysunku [dla filtrów czwartego rzędu]:
Biorąc pod uwagę, jak długo istniały te filtry, oraz biorąc pod uwagę fakt, że te „łuki” odpowiadają prostym liniom w płaszczyźnie s, oczywiste jest, że ktoś opracowałby formularz implementacji z jednym parametrem, który może zamiatać bieguny wzdłuż łuków w „czasie wykonywania” [w przeciwieństwie do „czasu projektowania”]. Jednak jeszcze czegoś takiego nie spotkałem.
Jest stosunkowo łatwo wymyślić różne sposoby na zrobienie tego, szczególnie w segmentach zakresu, i chęć rzucić na to trochę dodatkowych obliczeń. Zastanawiam się, co następuje:
Czy istnieje jakiś standardowy sposób implementacji przestrajalnego [cyfrowego] filtra Butterwortha danego zamówienia, który 1) ma optymalne właściwości (np. Wydajność, wytrzymałość), a 2) obejmuje cały zakres?
Czy to naprawdę tak łatwy problem, że nikt nie chce o tym rozmawiać? W takim przypadku wygląda na to, że pojawiłby się w programach do projektowania filtrów obok opcji dla projektów „statycznych”.
Znalazłem to: wielofunkcyjny filtr Butterwortha o zmiennej częstotliwości odcięcia , ale na początku Googling nie wydaje się być dużo informacji o tym, co w niej jest.
Aktualizacja (re: odpowiedzi)
Żeby było trochę bardziej jasne:
- Szukam „meta-projektu” z parametrem (powiedzmy z [0,1]), który automatycznie dostosuje odcięcie z DC do Nyquista (zachowując znormalizowane wzmocnienie) do zastosowania w systemie zmieniającym się w czasie. Coś w rodzaju tego dwubiegunowego rezonatora , z wyjątkiem ograniczeń Butterwortha. Chodzi o to, że obliczenie parametru byłoby bardziej wydajne niż przejście przez typową procedurę projektowania offline w czasie wykonywania.
- Niekoniecznie szukam nawet sposobu zaprojektowania „metafiltru” (tzn. Wykonania obliczeń matematycznych ze zmiennymi zamiast liczb). Zastanawiam się, czy istnieją opcje dla standardowych [nieoczywistych] form implementacji - ponieważ, powiedzmy, proste podejście, które odpowiada przypadkowi statycznemu, powoduje problemy numeryczne w przypadku zmieniającym się w czasie.
- Może nie ma problemów, a w praktyce stosuje się proste podejście. Byłoby świetnie. Obawiam się, że nie widziałem wyraźnie wspomnianego tematu w żadnym ze źródeł, z którymi się konsultowałem, ale może po prostu przegapiłem coś naprawdę oczywistego, więc pytam.
- W trakcie dodawania tutaj więcej szczegółów natknąłem się na ogólne podejście do parametrycznych struktur biquad, które jest prawie tym, czego szukam (i ma kilka ciekawych referencji).
Aktualizacja 2
Szukam odpowiedzi takich jak ta, którą zamieściłem w moim drugim komentarzu do Jasona R. w następujący sposób:
„Och tak, chcesz użyć parametryzacji III-2b z pracy typu„ tak a tak ”, w formie sieci z podsłuchem, ponieważ rozwiązuje ona taki i taki przypadek krawędzi przy użyciu minimalnej liczby mnożników.”
Może nic takiego nie istnieje, ale moje pytanie brzmi, czy tak jest, a jeśli tak, to co to jest lub gdzie mogę je znaleźć?
Pula
W oparciu o odniesienie do „formy kanonicznej obserwatora” podane przez Tima Wescott w wątku comp.dsp w odpowiedzi Jasona R , postanowiłem założyć, że być może będę musiał zacząć przekopywać się w literaturze dotyczącej systemów sterowania, więc spróbowałem poszukać „przestrzeń kosmiczna” Butterwortha , i okazało się, że to bardzo fajne podejście do projektowania / wdrażania, nie tylko parametrycznych filtrów Butterwortha, ale także filtrów Czebyszewa i Eliptycznych:
Sophocles J. Orfanidis, „High-Order Digital Parametric Equalizer Design”, J. Audio Eng. Soc., Vol. 53, s. 1026–1046, listopad 2005 r.
- Papier: http://www.ece.rutgers.edu/~orfanidi/ece348/hpeq.pdf
- Matlab Toolbox: http://eceweb1.rutgers.edu/~orfanidi/hpeq/
Zajmie mi to trochę czasu, ale w oparciu o to, co przeczytałem do tej pory, byłbym bardzo zaskoczony, gdyby nie to, czego szukam. Daję to Jasonowi R w celu uzyskania odniesienia do pliku comp.dsp, który doprowadził mnie do artykułu Orfanidis. Jego odpowiedź to także miły praktyczny przegląd projektowania filtrów Butterworth.
Tak, istnieją standardowe formularze implementacyjne dla Butterworth i prawie każda inna odpowiedź filtra. Wszystkie są w pełni zaimplementowane w mojej bibliotece filtrów IIR typu open source. Oto fragment kodu, który wytwarza pary biegun / zero dla filtra Butterwortha o dowolnym stopniu:
Jak widać, położenie biegunów oblicza się, dzieląc płaszczyznę s na „pary” równych segmentów.
Zapewniono odpowiedni kod dla wszystkich popularnych typów odpowiedzi filtrów: Czebyszew, Elliptic, Legendre, w tym wersje półkowe każdego z nich.
https://github.com/vinniefalco/DSPFiltersDemo.git
https://github.com/vinniefalco/DSPFilters.git
źródło