Filtruj projekt, rozkładając bieguny i zera na krzywych parametrycznych


17

N -tego rzędu Butterworth filtr dolnoprzepustowy o częstotliwości granicznej ωc mogą być zaprojektowane przez rozdzielenie N biegunów jednolity w odniesieniu do parametrów na płaszczyzna s parametrycznej krzywej , który jest półkolem:f ( α ) = ω c0<α<1f(α)=ωcei(π/2+πα)

Filtr Butterworth
Ryc. 1. Słupy filtra Butterwortha 6. rzędu (CC BY-SA 3.0 Fcorthay)

Godne uwagi jest to, że tę samą krzywą parametryczną można zastosować dla dowolnego stopnia filtra co daje nienormalizowaną funkcję przenoszenia:N

(1)H(s)=k=1N1sf(2k12N),

a wynikowy filtr jest zawsze filtrem Butterwortha. Innymi słowy, żaden inny filtr z taką samą liczbą biegunów i zer nie ma większej liczby zanikających pochodnych wielkości odpowiedzi częstotliwościowej o częstotliwościach i . Zestaw filtrów Butterwortha o tej samej częstotliwości odcięcia tworzy podzbiór filtrów Butterworth, dla których krzywa parametryczna jest unikalna. Podzbiór jest nieskończony, ponieważ nie ma górnej granicy.ω=0ω=ωcf(α)N

Mówiąc bardziej ogólnie, nie licząc bieguny i zera w nieskończoności , o ile nie wynikają z krzywych parametrycznych, dowolny filtr ze biegunów iNNpNNz zerami , gdzie N jest liczbą całkowitą, a Nz/Np nieujemną częścią liczb całkowitych, ma nietypową funkcję przenoszenia formy :

(2)H(s)=k=1NNz(sfz(2k12NNz))k=1NNp(sfp(2k12NNp)),

gdzie fp(α) i fz(α) są krzywymi parametrycznymi, które mogą opisywać rozkład biegunów i zer w granicy N .

  • Pytanie 1: Jakie inne typy filtrów niż Butterworth, zdefiniowane przez pewne kryterium optymalizacyjne, mają nieskończone podzbiory zdefiniowane przez ułamek Nz/Np i parę krzywych parametrycznych fp(α) i fz(α) na równanie. 2, z filtrami różniącymi się tylko N ? Filtry Czebiszewa typu I , tak; wraz z nimi bieguny znajdują się na połowie elipsy o kącie parametrycznym α . Zarówno filtry Butterwortha, jak i filtry typu Chebyshev typu I i II to specjalne przypadki filtrów eliptycznych. Żeby było jasne, przez „nieskończone podzbiory” nie mam na myśli nieskończonej liczby podzbiorów, ale podzbiory o nieskończonej wielkości.
  • Pytanie 2: Czy filtry eliptyczne spoza Butterwortha i Chebysheva mają takie nieskończone podzbiory?
  • Pytanie 3: Czy każdy filtr eliptyczny jest w tak nieskończonym podzbiorze?

Jeśli nieskończony zestaw wszystkich filtrów eliptycznych jest połączeniem wzajemnie wykluczających się i wyczerpujących nieskończonych podzbiorów filtrów eliptycznych, z których każdy jest zdefiniowany przez pojedynczą krzywą parametryczną do umieszczania biegunów i pojedynczą krzywą parametryczną do umieszczania zer oraz nieredukowalną część liczby od zera do biegunów, a następnie optymalizację numeryczną w celu uzyskania filtrów eliptycznych można przeprowadzić, optymalizując krzywe parametryczne zamiast filtrów dla określonej kolejności. Optymalne krzywe mogą być ponownie wykorzystane dla kilku rzędów filtrów, zachowując optymalność. Powyższe pytanie „jeśli” zadaje pytania 2 i 3. Pytanie 1 dotyczy rozszerzenia podejścia na inne kryteria optymalizacji.

Z pewnością wykresy biegunowo-zerowe filtrów eliptycznych wyglądają tak, jakby istniały pewne krzywe:

Filtr eliptyczny
Rysunek 2. Logarytmiczna wielkość eliptycznego filtra dolnoprzepustowego na płaszczyźnie s. Białe punkty są biegunami, a czarne punkty są zerami.

Jedna potencjalna szansa to jedna na EQ. 1, niektóre wartości a zatem pewne pozycje biegunów i zera, muszą być wspólne dla wielu filtrów:α

stopień alfa i filtru
Figura 5. Wartości otrzymane przez parametrowej krzywej o różnym stopniu filtr N . Zwróć uwagę, że dla kilku rzędów filtrów mamy na przykład α = 0,5 lub α = 0,25 i α = 0,75.αNα=0.5α=0.25α=0.75.

W szczególności, dla filtra, który ma biegunów lub zer, wszystkie pojawiają się również w filtrach, które mają 3 n N tego samego, gdzie n jest dowolną liczbą całkowitą dodatnią.N3nNn


Demonstrując wyjątkowo suchy humor, na prośbę użytkownika A_A przyjrzałem się lemniscate Bernoulli jako przykładowej krzywej parametrycznej w płaszczyźnie s:

Lemniscate of Bernoulli
Ryc. 4. Lemniscate z Bernoulli

Poniższa krzywa parametryczna podaje lewą połowę lemniscate Bernoulliego, z parametrem i rozpoczynającym się i kończącym na s = 0 :0<a<1s=0

f(α)=2sin(πα)cos2(πα)+1+i2sin(πα)cos(πα)cos2(πα)+1

Korzystając z tej krzywej parametrycznej dla biegunów, chcielibyśmy jakoś porównać między różnymi N odpowiedziami częstotliwościowymi wielkości uzyskanymi za pomocą Eq. 1. Jednym ze sposobów jest spojrzenie na N ty korzeń odpowiedzi częstotliwościowej wielkości. Pozwala nam również rzucić okiem na to, jak wyglądają rzeczy w N :|H(iω)|1/NN

N-ty pierwiastek odpowiedzi częstotliwościowej wielkości
Ryc. 3. N ty pierwiastek odpowiedzi częstotliwościowej wielkościfiltra z biegunem N , którego bieguny są rozmieszczone równomiernie na lemniscate Bernoulli'ego w odniesieniu do parametru krzywej. Przy wyższych częstotliwościach niż te pokazane wszystkie wykresy mają nachylenie -6 dB / oct (-20 dB / dekadę). W granicy N występuje nieciągłość w pochodnej wykresu przy ω = 0 s = 0, gdy lemniscate (dwukrotnie) przecina w tym punkcie osi wyobrażonej płaszczyzny s.NNω=0s=0

Granicę tego pierwiastka wielkości funkcji przenoszenia (równanie 1) jako N obliczono jako:NN

(3)limN|H(s)|1/N=01|1sf(α)|dα=e01log(|sf(α)|)dα,

gdzie reprezentuje całkę iloczynową, którą można obliczyć za pomocą logarytmu naturalnego, całki i funkcji wykładniczej. Jak często w przypadku integracji, nie było wyrażenia symbolicznego dla całki, którą należałoby oceniać liczbowo dla lemniscate Bernoulliego. Podsumowując, uzyskane odpowiedzi częstotliwościowe wielkości wydają się raczej bezużyteczne dla tej „losowo wybranej” krzywej parametrycznej.


Użytkownik Matt L. wspomniał o filtrach Lernera. Co znalazłem na ich temat, z lekką interpretacją:

H(s)=k=1mBk(s+a)(s+a)2+bk2B1=1/2,Bm=(1)m+12Bi=(1)k+1 for k=2,,m1,

z pozycjami biegunowymi tak, że b m - b m - 1 = b 2 - b 1 = 1a+ibkdla wszystkich3<k<m-1. Wygląda na to, że te bieguny, chociaż rozmieszczone na linii, nie są biegunami pełnego filtra, ale biegunami równoległych sekcji. Nie potwierdziłem, jakie są bieguny całego systemu ani czy filtry Lernera są w jakimkolwiek użytecznym sensie optymalne. Odniesienie:CM Rader, B. Gold, MIT Lincoln Laboratory Technical Note 1965-63,Digital Filter Design Techniques, 23 grudnia 1965.bmbm1=b2b1=12(bkbk1)3<k<m1


4
Mój angielski jest dziś niepewny, więc nie do końca rozumiem, co próbujesz powiedzieć, ale jeśli chodzi o więcej niż jeden sposób obliczenia filtra eliptycznego, sugerowałbym znalezienie książki z Lutovaca w eliptycznej Wikipedii filtruj notatki (także Dimopoulos), to całkiem otwieracz do oczu: możesz mieć 7 sposobów zaprojektowania filtra eliptycznego. Jeśli nie o to ci chodziło, zignoruj ​​mój komentarz.
zainteresowany obywatel

2
Filtry Lernera mają wszystkie bieguny na linii równoległej do osi urojonej. Mają tę zaletę, że mają w przybliżeniu liniową odpowiedź fazową.
Matt L.

2
Kompletny filtr; ale jeśli bieguny wszystkich równoległych odcinków leżą na tej samej linii, to również kompletny filtr będzie miał wszystkie bieguny na tej linii. Masz rację co do referencji. Jest taka notka techniczna Radera i Golda, o której zwykle mówię.
Matt L.,

1
OK, na który dziennik idziemy? : D Czy jest w tym jakaś zasada przewodnia? Na przykład, czy szukasz możliwego parametru, który w pewnym aspekcie byłby lepszy od elipsy? (np. pasmo przejściowe vs tętnienie). Inną rodziną, która może być „interesująca” są * cykloidy ... Ale bez „zasady zamawiania” nie możemy nazwać żadnej z nich „najgorszą, złą, dobrą, najlepszą” :)
A_A

2
Wątek komentarza jest za długi. Jednak po prostu wrzucam parametryczne lokalizacja filtrów falkowych Daubechies ams.org/journals/proc/1996-124-12/S0002-9939-96-03557-5/…|4y(1y)|=1
Laurent Duval

Odpowiedzi:


6

W odpowiedzi użyję notacji matematycznych , czyli matematycznych odpowiedników wyrażania odpowiedzi wielkościowej filtra w dziedzinie częstotliwości. W tym celu zostanie użyte zamiast j ω , aby lepiej odzwierciedlić pytanie @ Olli dotyczące znalezienia matematycznej krzywej parametrycznej w celu przybliżenia filtrów. Ponieważ nie jest to konstrukcja filtra, częstotliwość narożna jest znormalizowana do jedności, stąd x zamiast ω / ω p .xjωxω/ωp


Nie jestem pewien, czy jest to odpowiedź, której szukasz, ale dowolny filtr może być reprezentowany przez ogólną funkcję przesyłania:

H2(x)=11+ϵp2R2(x)

gdzie , aR(x)jest funkcją charakterystyczną tłumienia. Apϵp=10Ap/101R(x)Ap jest tłumieniem / tętnieniem pasma przepustowego w dB, ale może także znajdować się w paśmie stop dla Cauer / Elliptic, odwrotnego Pascala lub odwrotnego Czebiszewa (aka „Czebyshev Type II”). Te ostatnie są wyrażone jako:

H2(x)=11+1ϵs2TN2(x)

Dla Butterworth, jak widzieliście:

R(x)=xN

dla Czebyszewa to lub wielomiany Czebyszewa ( cos / a c o s dla x 1 i cosh / a c o s h dla x > 1R(x)=TN(x)cosacosx1coshacoshx>1 ), na eliptyczny to:

R(x)=cd(NK1Kcd1(x,k),k1)

W książce Lutovaca istnieje kilka niezwykle uproszczonych reprezentacji dzięki dokładnie równoważnym funkcjom filtrów eliptycznych. Na przykład funkcję przeniesienia drugiego rzędu można dokładnie przedstawić za pomocą:

R(x)=(1k2+1)x21(1k21)x2+1

gdzie jedyną zależnością jest moduł k .

Są to znane typy, dla mniej znanych typów, na przykład Legendre, , gdzie P N ( x ) są wielomianami Legendre, dla filtrów Pascal istnieje przesunięta i znormalizowana wersja Pascal wielomiany, czyli:R(x)=PN(x)PN(x)

(N+12x+N12N)

I tak dalej. Niektóre są aproksymowane inaczej, na przykład Gaussian jest , który jest rozszerzany serią MacLaurin, mniej więcej tak samo dla Bessela, który jest rozszerzany z wyrażenia Laplace'a exp ( - s )|H(x)|2=exp(x2)exp(s) do terminów mianownika jako:

ai=(2N1)!2Nii!(Ni)!

Istnieją również bardziej egzotyczne sposoby na wywnioskowanie funkcji transferu, takie jak Papoulis (Optimum L) i Halpern, które wykorzystują wielomiany Legendre do zintegrowania odpowiedzi, tak że funkcja transferu monotonicznie zmniejsza się przy wysokiej selektywności filtra. Dla Papoulisa jest to:

R(x2)=i=12x21(i=0kaiPi(x))2

gdzie jest ( N - 1 ) / 2 i i kilka inteligentnie wybrane warunki, w zależności od tego, czy N lub Kk(N1)/2aiNk , oba są parzyste / nieparzyste.

Jak wspomniano, wszystkie te nie wykorzystują domeny częstotliwości do reprezentacji, ponieważ w jest matematyczny x , rzeczywisty, nie wyobrażony j ω . Rozwiązywanie korzeni można albo zrobić po prostu znalezienie bieguny (i zera) dla funkcji przenoszenia przy wymianie X z j Ohm , więc dowiedzieć. H ( s ) H ( - y ) i wybierając wielomian Hurwitz, lub po prostu znajdowanie korzeni wyrażenia matematycznego w xxxjωxjωH(s)H(s)x(patrz link w drugim komentarzu poniżej). To da korzenie obrócone o 90 stopni, co oznacza, że ​​wystarczy przełączyć między sobą rzeczywistą i urojoną część, a następnie wybrać prawą stronę.

Czy ta odpowiedź jest zbliżona do tego, czego szukasz?


Myślę, że w tym momencie ważne jest, aby powiedzieć, że filtry nie istnieją, ponieważ ludzie rzucali strzałkami w mapę, aby oznaczyć bieguny, przyszli po dokładnym rozważeniu celu, jaki mieli na myśli.

Na przykład, i zbliżając się do coraz wyższej jakości, filtry Butterworth powstały, ponieważ potrzebowano filtra, który byłby prosty do zaprojektowania, z monotonicznie rosnącym tłumieniem. Linkwitz-Riley to nic innego jak Butterworth w (sprytnym) przebraniu, że sumowanie dolnoprzepustowego i górnoprzepustowego o tej samej częstotliwości narożnej daje płaską odpowiedź, przydatną w zastosowaniach audio.

Czebyshev (I i II) zostały zaprojektowane tak, aby miały lepsze tłumienie, kosztem zmarszczek w paśmie pasma lub stopu. Legendre, ultrasferyczny, Pascal (i ewentualnie inne) minimalizują tętnienie, poprawiając w ten sposób opóźnienie grupy kosztem nieznacznie zmniejszonego tłumienia.

Papoulis i Halpern zostały opracowane jako mieszanka pomiędzy tętnieniem pasma przepustowego a monotonicznie rosnącym tłumieniem, przy jednoczesnym ulepszeniu tłumienia wokół częstotliwości narożnej, kosztem spadku w pasmie przepustowym.

Filtry Cauer / Elliptic wykorzystują tętnienie zarówno pasma przepustowego, jak i pasmowego, aby zminimalizować wymaganą kolejność dla tego samego lub lepszego tłumienia.

Wszystkie są w dziedzinie częstotliwości, którą jest większość filtrów. Idąc w drugą stronę, filtry Bessela powstały z powodu potrzeby aproksymacji opóźnienia analogowego, więc zbliżają się do wraz ze wzrostem kolejności, podczas gdy filtry Gaussa zostały utworzone dla przekroczenia zerowego, a więc aproksymują exp ( - x 2 ) przy rosnącym porządku.exp(jω)exp(x2)

Oczywiście, jak ktoś sugerował, możesz również posypać kijki i zobaczyć, co się pojawi, może skonfigurować je jako gwiazdę lub jakiś wzór plastra miodu, wybrać ulubioną lemniscate, ale to nie jest tak, jeśli chcesz filtr z tego. Jasne, możesz otrzymać egzotyczną odpowiedź, która może nawet dotyczyć kto-gdzie-gdzie, jako pojedynczy przypadek na milion, ale to naprawdę tylko szczególny przypadek. Najlepiej jest narzucić cel projektowy i przekonać się, jak można go osiągnąć w kategoriach fizycznie wykonalnego filtra. Nawet jeśli oznacza to wymyślenie filtru „kto wie, gdzie ma zastosowanie”. :-)


Biorąc pod uwagę ostatnią odpowiedź od @Olli, rozważ prosty przypadek filtra Butterwortha, zaprojektowanego, powiedzmy, dla 0.9@fp=1, 0.1@fs=5. Obliczenia są mniej więcej takie:

Ap=20log10(0.9)=0.91515 dBAs=20log10(0.1)=20 dBϵp=10Ap/101=0.48432ϵs=10As/101=9.94987F=fsfp=51=5N=logϵsϵplogF=1.878

oblicza się jako zaokrąglone w górę, więc N = 2 . Oznacza to, że jeśli dopasujesz odpowiedź filtra do pasma przepustowego, uzyskasz wyższe tłumienie w pasmie zatrzymania @ fs. Przy zastosowaniu pierwszej formuły tłumienie @ fs wynosi:NN=2

H(fs)=11+0.48432252N=0.08231<0.1

Jeśli musisz dopasować pasmo zatrzymania, aby otrzymać 0.1@fs, musisz zastosować korektę częstotliwości:

ωscale=(ϵsϵp)1/Nfpfs=9.949870.5=0.9065H(5ωscale)=0.1

Więc może się wahać od 1 do 0.9065 , a otrzymasz wszystkie nieskończone możliwości pomiędzy tymi dwoma skrajnościami. Możesz to zrobić? Tak. Czy warto? Nawet jeśli znajdziesz argument lub dwa, ogólna odpowiedź nadal brzmi „nie”. Jak to wszystko było możliwe? Ponieważ uzyskano już początkową odpowiedź filtra Butterwortha, wcześniej wiedziałeś, że masz analityczne wyrażenie na filtr, który ma monotonicznie zmniejszające się tłumienie częstotliwości, co prowadzi do znalezienia biegunów z mianownika funkcji przenoszenia, które zdarzają się leżeć na kole o równych kątach.ωscale10.9065


Biorąc pod uwagę ostatnią odpowiedź @Olli, jest kilka rzeczy, które wymagają wyjaśnienia. Po pierwsze, wszystko dotyczy projektowania filtrów, bez względu na to, jak na to patrzysz: z matematycznego lub fizycznego punktu widzenia.

Jeśli jest to matematyka, to jest pewna interesująca część jej teorii, a mianowicie uzyskanie innego rzędu z tego samego filtra bez potrzeby przeprojektowywania oryginalnego filtra.

Ale z fizycznego punktu widzenia wykonalności cały proces wymaga dodatkowej, niepotrzebnej pracy, która (powinna) prowadzić do tego samego rezultatu, i to właśnie jest część zwiększania / zmniejszania kolejności filtrów w celu uzyskania nowego. Moje argumenty są następujące.

Każdy filtr, w jego rdzeniu, służy do filtrowania niepotrzebnych częstotliwości, czy to elektrycznych, mechanicznych czy innych wielkości fizycznych. Ich celem jest modyfikacja widma (lub opóźnienia grupowego lub odpowiedzi czasowej). Jeśli istnieje potrzeba takiego urządzenia, to nie można zaprojektować tego urządzenia, po prostu wrzucając filtr dowolnego rodzaju, „po prostu go tam włóż, odfiltruje rzeczy”; jego konstrukcja jest najczęściej dość zaangażowana. Ale cały ten proces musi zaczynać się od wymagań. Oznacza to, że najpierw musi być określony cel: „odfiltrujmy wszystko powyżej 100 Hz ” lub „przepuszczaj tylko światło podczerwone” lub coś podobnego, co rozpoczyna się najpierw od ustalenia parametrów, z którymi ten filtr musi praca.

Jako szybki przykład, gdyby zaszła potrzeba odfiltrowania częstotliwości poniżej i powyżej 3000  Hz300 Hz3000 Hz , nie można po prostu wrzucić żadnego filtra pasmowego z tymi częstotliwościami narożnymi, należy również określić tłumienie, niezależnie od tego, czy tętnienie w paśmie przepustowym, czy pasmo zatrzymania lub oba te elementy są potrzebne lub akceptowane, niezależnie od tego, czy faza jest liniowa, czy nie, w jaki sposób opóźnienie grupy wpłynie na to wszystko itp. Przede wszystkim istnieją określone parametry, według których filtr musi zostać zaprojektowany.

Po określeniu parametrów, w jaki sposób zostanie zaprojektowany filtr? Załóżmy, że istnieje zapotrzebowanie na eliptyczny filtr dolnoprzepustowy 12 rzędu i że istnieje możliwość zwiększenia filtru niskiego rzędu do filtra wyższego rzędu (patrz odpowiedź @ Olli). Powiedzmy, że proces przekształcania czwartego rzędu w dwunasty jest bezbłędny, że istnieje sposób na określenie parametrów projektowych dla filtra czwartego rzędu w taki sposób, że po przekształceniu powstały 12. rząd spełnianie tych warunków. „Myślenie z premedytacją”, jeśli wolisz.

Powstaje pytanie: w jaki sposób zostanie zaprojektowany filtr czwartego rzędu? Odpowiedzią mogą być tylko znane sposoby jej zaprojektowania. A jeśli istnieją inne metody, które mają zostać opracowane, lub które dopiero zostaną wynalezione, należy je najpierw zastosować, aby zaprojektować filtr czwartego rzędu. Dopiero potem można obliczyć 12. rząd. Jak zakładano od samego początku, nawet przy bezbłędnym procesie transformacji oznaczałoby to tylko, że wynikowy filtr, 12. rząd, do którego cały projekt próbuje się zbliżyć, potrzebuje dwóch etapów projektowania: jeden dla czwartego rzędu i drugi , dla 12. rzędu, czyniąc cały proces niepotrzebnie obciążonym, ponieważ filtr 12. rzędu mógł być po prostu zaprojektowany przede wszystkim przy użyciu metody stosowanej dla 4. rzędu.

Chodźmy trochę dalej i załóżmy jeszcze więcej. Powstałe bieguny 12. rzędu leżą na elipsie, a zera na osi urojonej. Odległości między nimi byłyby dokładnie określone przez podstawowe funkcje eliptyczne, które rządzą filtrami eliptycznymi. Załóżmy, że istnieje sposób na zdefiniowanie tych krzywych, jak ma nadzieję @Olli, w taki sposób, że możliwe jest łatwe zaprojektowanie filtra od samego początku, w jednym ujęciu, po prostu za pomocą tych (parametrycznych lub nie) krzywych, za pomocą których wszystkie umieszczenie słupa jest zakończone. Jak na razie dobrze. Ale te krzywe musiałyby zostać najpierw obliczone, a parametry, za pomocą których się rozplątują, są dokładnie tymi, które są używane do projektowania filtrów, tymi samymi, które wygenerowałyby filtr innymi metodami, znanymi lub jeszcze nieznanymi. Co więcej, obliczenia są jeszcze do zrobienia i najprawdopodobniej podstawowe definicje tych krzywych parametrycznych musiałyby być eliptyczne, w taki czy inny sposób, albo nie wyszedłby z tego żaden filtr eliptyczny [uwaga # 1]. Co oznacza, że ​​cały proces byłby po prostu kolejną metodą projektowania filtrów eliptycznych, ponieważ bieguny filtra eliptycznego mają już zamknięte wyrażenia formalne.

Nie zrozum mnie źle. Jeśli jeden filtr można zaprojektować w jeden sposób, w ten sam sposób można go zaprojektować w inny sposób. To tylko jeden z tych „jeszcze nieznanych” sposobów. Brawo dla wynalazcy. Ale jeśli ta metoda projektowania pociąga za sobą dodatkowe kroki w celu uzyskania takich samych rezultatów, jak w przypadku innej metody, nie wydaje się to wykonalnym podejściem. I pamiętaj: nie używam nazw ani etykiet opisowych, gdy mówię o projektach filtrów, tylko nazwy ogólne, ponieważ tak naprawdę nie ma znaczenia, której metody używasz, dopóki wyniki są prawidłowe, a metoda nie jest ' obciążanie procesu projektowania.

[uwaga # 1]: Samo podążanie za krzywą ogólną w celu umieszczenia biegunów nie wystarczy, a dam dwa przykłady związane z filtrami Butterwortha, które mają bieguny umieszczone na okręgu o jednakowo odległych kątach. Filtry Czebyszewa typu I mają bieguny umieszczone na elipsie, pod kątami Butterwortha, ale rzutowane na wyobrażoną oś, dopóki nie przechwycą elipsy. Modyfikacja odległości między biegunami spowoduje zachowanie nierówności, co spowoduje, że filtr będzie typu innego niż Czebyszew. Podobnie, bieguny filtra eliptycznego o minimalnym Q są umieszczone na leżącym poniżej okręgu, ale to nie znaczy, że jest to Butterworth (nawet jeśli marszczenie jest minimalnym możliwym dla filtra eliptycznego), ponieważ ma nierówne odległości między kątami . Po ostatni tutaj

Butterworth vs min-Q elliptic

Ogólnie rzecz biorąc, pomimo prawdziwego zainteresowania pytaniem, obawiam się, że ma ono jedynie wartość teoretyczną, w najlepszym razie edukacyjną, ponieważ nie pasuje do samej części związanej z konstrukcją filtra. Oczywiście, jeśli okaże się, że ma on rzeczywistą wartość, chętnie udowodnię, że się mylę, ponieważ oznaczałoby to, że istnieje nowa metoda projektowania filtrów, być może lepsza niż te już istniejące.


@OlliNiemitalo Tak, to wersja nie do kwadratu. Rób to, co mówi kapłan, a nie to, co robi. :-) Apto tłumienie / tętnienie pasma, w dB, ale może być również dla pasma stopu, w przypadku Cauer / Elliptic, odwrotnego Czebyszewa lub odwrotnego Pascala. Widzę, że są jeszcze inne drobne błędy, będę je edytować.
zainteresowany obywatel

1
Olli, istnieją ładne wyrażenia w formie zamkniętej zarówno dla Czebyszewa, jak i Butterwortha. ale nie tyle w przypadku filtra Elliptical / Cauer. sprowadzenie do tego dobrze zdefiniowanego alg (loci biegunów i zer) jest (jak by to powiedzieć?) kopulującym żeńskim psem .
robert bristow-johnson

1
@ robertbristow-johnson Pomimo dokładnego synonimu naukowego istnieją co najmniej 3 sposoby reprezentowania biegunów Cauera. Jednym z nich jest przybliżenie (Antoniou ?, Dimopoulos ?, nie jestem pewien), które, jak sądzę, jest najszerzej stosowane. Jest też sposób Burrusa, który dokładnie spełnia funkcje eliptyczne, tzn. Zera to ±jot/(ksn(jaK./N.,k)),ja=1,2),... Jest też Lutovac, który, nawet jeśli nie może używać liczb pierwszych, znacznie je upraszcza, ale stają się większe wraz ze wzrostem kolejności.
zainteresowany obywatel

1
@ robertbristow-johnson Ja też, jak wspomniano na końcu oryginalnej edycji, i w jednym z komentarzy, ale wygląda na to, że został zredagowany po drodze, poprawię to. Jeśli chodzi o funkcje eliptyczne, Burrus i inna (zapomniałeś nazwy, Paarman?) Używają wersji , ale s n ( K + x ) = c d ( x ) , przesunął sinus Jacobi, o czym zauważył Lutovac. Aby uniknąć konieczności obliczania dodatkowej całki eliptycznej, można napisać c d ( )sn(K+sn1())sn(K+x)=cd(x)cd(), nie ma różnicy. Prosty wykres może to pokazać ( ). k1=ϵp/ϵs,k=fp/fs,K1=K(k1),K=K(k)
obywatel zaniepokojony

1
@ robertbristow-johnson Przegapiłeś tę część, w której mówię, że wszystkie wyrażenia używają jako zmiennej, ponieważ odzwierciedlają one funkcję matematyczną opisującą odpowiedź filtra, ponieważ jest ona związana z matematycznym podejściem Olli'ego. Wykreślenie wszystkich funkcji za pomocą x w dowolnym oprogramowaniu matematycznym da ci wielkość, bez wchodzenia w dziedzinę częstotliwości. Zostawiłem na zewnątrz, zastępując xxx , czyniąc H ( s ) H ( - s ) i wybierając tylko bieguny / zera kryterium Hurwitz, czyli do projektowania filtrów. Poza tym bez problemu można zdobyć słupy (patrz link w komentarzu nr 2).x=jωH(s)H(s)
zainteresowany obywatel

2

Chociaż intuicyjnie czuję, że rozumiem, co jest wymagane, staram się to wyrazić. Nie jestem pewien, czy dzieje się tak z powodu moich własnych ograniczeń, czy rzeczywiście problem jest trudny lub źle postawiony. Mam wrażenie, że jest źle postawiony. Oto moja próba:

  1. Celem jest zbudowanie filtra. Oznacza to, że oblicz zestaw współczynników jakiejś racjonalnej formy:

H(s)=B(s)A(s)=m=0MbmsmsN+n=0N1ansn

(Należy pamiętać, że nie musi to być ponad płaszczyzną s, może również znajdować się nad płaszczyzną z. Można również rozważyć prostsze formy (np. aby mieć tylko bieguny). uruchomić na razie s-samolot i trzymajmy też nominator).H(s)

  1. Filtry cyfrowe charakteryzują się częstotliwością i odpowiedziami fazowymi, które można całkowicie określić na podstawie wartości (lub pozycji na płaszczyźnie s) ich an,bm współczynników. Dotychczasowa dyskusja wydaje się koncentrować na odpowiedzi częstotliwościowej, więc rozważmy ją na chwilę.

  2. Biorąc pod uwagę zestaw niektórych pewnego punktu σ + j ωan,bmσ+jω na płaszczyzna s geometrycznego sposób wyznaczania odpowiedzi częstotliwościowej w tym punkcie jest utworzenie „zero wektory” (z miejsc zera w kierunku punkt szczególny) i „wektory biegunowe” (podobnie dla biegunów), sumują ich wielkości i tworzą stosunek jak w powyższym równaniu.

  3. Zapytanie „Jakie typy filtrów [...] określone przez jakieś kryterium optymalności mają nieskończone podzbiory zdefiniowane przez krzywe parametryczne [...]” to zapytanie „Co to jest para niektórych krzywych parametrycznych A(s,Θ),B(s,Θ) których położenia również skutkują krzywą odpowiedzi wielkości o określonych pożądanych charakterystykach dla Θ (np. nachylenie, tętnienie, inne). Gdzie jest parametrem (parametrami) parametru parametrycznego.Θ

  4. Uwaga w tym miejscu: Z jednej strony szukamy które spełniajądwaograniczenia. Po pierwsze, muszą spełniać ograniczenia parametryczne (łatwe), a po drugie muszą spełniać ograniczenia określone przez charakterystykę odpowiedzi wielkościowej (trudne).A(s),B(s)

  5. Myślę, że problem w obecnej formie jest źle postawiony, ponieważ nie ma analitycznego sposobu połączenia ograniczeń odpowiedzi częstotliwościowej z parametrami , z wyjątkiem bezpośredniej ocenyA(s,Θ),B(s,Θ). Innymi słowy, w tej chwili niemożliwe jest określenie pewnych ograniczeń na krzywej odpowiedzi częstotliwościowej, a przez to praca wstecz i znalezienie parametrów, które spełniają te ograniczenia. Możemy przejść na drugą stronę, ale nie do tyłu.

  6. Dlatego tym, co (moim zdaniem) realistycznie można zrobić, jest zaakceptowanie o określonej formie, a następnie albo sprawdzić, jak wypadają one jako filtry LUB , iteracyjnie przesuwaj ich współczynniki tak daleko, jak pozwalają na to parametry parametryczne, aby wycisnąć najlepszą wydajność, jaką mogą zaoferować z określonego zakresu ich Θ . jednakA(s,Θ),B(s,Θ)Θ, możemy odkryć, że biorąc pod uwagę wypracowane cechy eliptyczne (na przykład), dany schemat iteracyjny parametru parametrycznego może wybrać „wygięcie” współczynników jak najbliżej pewnej charakterystyki „eliptycznej” regionu. Dlatego wcześniej wspominam, że może się okazać, że złożony parametr może zostać podzielony na „sumę eliptów” lub „sumę krzywych o znanych cechach”. Być może konieczne jest tutaj trzecie ograniczenie, czytając „Unikaj znanych konfiguracji ”, innymi słowy, penalizuj rozwiązania, które zaczynają wyglądać jak eliptyczne (ale wciąż w schemacie iteracyjnym).A(s),B(s)

Wreszcie, jeśli ta ścieżka nie jest jak dotąd zbyt zła, to jesteśmy gdzieś blisko czegoś takiego jak algorytmy genetyczne do projektowania filtrów lub innej świadomej techniki „strzelania w ciemności”, za pomocą której można uzyskać współczynniki filtra spełniające określone kryteria . Powyższe to tylko przykład, istnieje więcej publikacji w tym zakresie.

Mam nadzieję że to pomoże.


+1 Podoba mi się twój program. Dla punktu 4 i innych cel optymalizacji można określić w kategoriach lub zwykle jego wartość bezwzględna. Z drugiej strony oznaczałoby to, że już polegamy na opłacalności tego podejścia, co jest kwestionowane. Konieczne byłoby więc sprawdzenie za pomocą niektórych skończonych filtrów N. W punkcie # 7 nie sądzę, aby „odpychanie eliptyczne” pomogło, ponieważ dałoby nieoptymalne filtry prawie eliptyczne. Zamiast tego cel optymalizacji powinien zostać zmieniony. limN(H(iω))1/N,N
Olli Niemitalo

1
Dziękuję Ci. Zgadzam się, że cel optymalizacji jest tutaj kluczowy. „Odpychanie eliptiki” powinno być stosowane częściej ... :)
A_A

2

nie wydaje mi się, aby to szczególnie niezwykłe, że filtry Butterwortha, zdefiniowane jako filtry wielobiegunowe, które są maksymalnie płaskie przy (dla prototypu LPF, co oznacza, że ​​najbardziej możliwe pochodne | H ( j ω ) | są zerowe przy ω = 0 ), mają bieguny w płaszczyźnie s, które leżą w równych odstępach na lewym półkolu o promieniu ω 0 .ω=0|H(jω)|ω=0ω0

z „maksymalnie płaskich” i „bez zer” można uzyskać

|H(jω)|2=11+(ωω0)2)N.

dla N. Butterwortha -tego rzędu.

więc

|H.(s)|2)=11+(sjotω0)2)N.

s=pn jest biegunem, gdy mianownik wynosi zero.

1+(pnjotω0)2)N.=0

lub

(pnjotω0)2)N.=-1

pn2)N.=-(jotω0)2)N.

|pn|=ω0

2Narg{pn}=π+2Nπ2+2πn

arg{pn}=π2+πN(n12)

dla N -tego rzędu Tchebyshev (typ 1, który jest cały słup), to tak:

|H(jω)|2=11+ϵ2TN2(ωωc)

gdzie

TN(x){cos(Narccos(x)),if |x|1cosh(Narccosh(x)),if x1(1)Ncosh(Narccosh(x)),if x1

p rzędu Tchebyshev wielomiany i spełniają rekursji:N

T0(x)=1T1(x)=xTn+1(x)=2xTn(x)Tn1(x)nZ1

i jest częstotliwością „odcięcia pasma przepustowego” i nie należy mylić jej z częstotliwością -3 dB ω 0 . (ale oba są ze sobą powiązane).ωcω0

parametr tętnienia pasma przepustowego wynosi ϵ=10dBripple101

rozszerzenie analityczne ponownie:

|H(s)|2=11+ϵ2TN2(sjωc)

i ponownie s=pn jest biegunem, gdy mianownik wynosi zero.

1+ϵ2TN2(pnjωc)=0

lub

TN(pnjωc)=±jϵ

(ponieważ możemy użyć wyrażenia cos ( ) lub cosh ( ) dla T N ( )cos(θ)=cosh(jθ)cos()cosh()TN()

cosh(Narccosh(pnjωc))=±jϵ

Narccosh(pnjωc)=arccosh(±jϵ)

ponieważ ix=arccosh(y)=log(y±

y=cosh(x)=12(ex+ex)
x=arccosh(y)=log(y±y21)

następnie

Nlog(pnjωc±(pnjωc)21)=log(±jϵ±(±jϵ)21)

Nlog((pn)+j(pn)jωc±((pn)+j(pn)jωc)21)=log(±j(1ϵ±1ϵ2+1))

Nlog(j(pn)+(pn)ωc±(j(pn)+(pn)ωc)21)=log(±j(1ϵ±1ϵ2+1))

och kochanie, może nie dostanę tego za 12 godzin

zdecydowałem, że jestem zbyt leniwy, żeby się przez to rozejrzeć. jeśli ktoś chce go podnieść, nie krępuj się. konwersja lotsa między prostokątną i biegunową notacją wartości zespolonych. Pamiętaj kiedy

wtedy | w| =+

w=± z 
i arg { w }
|w|=+|z|
arg{w}=12arg{z}+arg{±1}=12arg{z}+π2(1±1)

log(z)=log|z|+jotarg{z}+jot2)πnnZ

2)π2)πnarg{}log()pn

jeśli lubisz matematyczną masturbację złożonymi zmiennymi, powal się.


+1 za interesującą obserwację, ale ponieważ nie dotyczy to pytań, mam nadzieję, że będą inni kandydaci do nagrody.
Olli Niemitalo

więc Olli, możesz zobaczyć, jak wyprowadzenie biegunów dla Tchebyshev 1 i biegunów / zer dla Tchebyshev 2 odbywa się w podobny sposób?
robert bristow-johnson

Jabobi Elliptical to dziwka. Nie wiem, jak to ocenić bez szukania go w Antonio. i to nie będzie forma zamknięta.
Robert Bristol-Johnnson

Yes, the zeros of Tchebyshev 2 are uniformly distributed on parametric curve f(α)=j/cos(πα) for cutoff 1.
Olli Niemitalo

a jak uzyskać ten wynik i loci biegunów dla Czebyszewa 1 lub 2?
robert bristow-johnson

0

Eliptyczny od 12. rzędu do eliptyczny 4. rzędu

(Nie kwalifikuję się do nagrody). Próbowałem stworzyć kontrprzykład na pytanie 3 w Octave, ale byłem mile zaskoczony, że nie mogłem. Jeśli odpowiedź na pytanie 3 brzmi „tak”, to zgodnie z rys. 5 pytania, poszczególne bieguny i zera powinny być dzielone między filtrem eliptycznym rzędu 4 a filtrem eliptycznym rzędu 12, pokazanym tutaj wyraźnie: Ryc. 1. Słupy i zera potencjalnie wspólne dla eliptycznych filtrów porządkuShared poles and zeros
N.=12 i N.=4, w kolorze niebieskim i numerowane w kolejności rosnącej parametru α krzywej parametrycznej fa(α).

Zaprojektujmy filtr eliptyczny rzędu 12 z pewnymi dowolnymi parametrami: tętnienie pasma przepustowego 1 dB, tętnienie pasma zatrzymania -90 dB, częstotliwość odcięcia 0,1234, płaszczyzna s zamiast płaszczyzny Z:

pkg load signal;
[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
freqs(b12, a12, [0:10000]/10000);

Odpowiedź częstotliwościowa wielkości filtra rzędu 12
Ryc. 2. Pasmo przenoszenia wielkości dla filtra eliptycznego 12 rzędu zaprojektowanego za pomocą ellip .

scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));

Biegi i zera, kolejność filtrów 12
Ryc. 3. Bieguny (czerwony) i zera (niebieski) rzędu 12 eliptyczny filtr zaprojektowany przy użyciu ellip . Oś pozioma: część rzeczywista, oś pionowa: część urojona.

Zbudujmy filtr rzędu 4, ponownie wykorzystując wybrane bieguny i zera filtru rzędu 12, zgodnie z rys. 1. W szczególnym przypadku uporządkowanie biegunów i zer według części urojonej jest wystarczające:

[~, ira12] = sort(imag(ra12));
[~, irb12] = sort(imag(rb12));
ra4 = [ra12(ira12)(2), ra12(ira12)(5), ra12(ira12)(8), ra12(ira12)(11)];
rb4 = [rb12(irb12)(2), rb12(irb12)(5), rb12(irb12)(8), rb12(irb12)(11)];
freqs(poly(rb4), poly(ra4), [0:10000]/10000);

Odpowiedź częstotliwościowa wielkości filtra czwartego rzędu
Ryc. 4. Odpowiedź częstotliwościowa wielkości filtra czwartego rzędu, który ma wszystkie bieguny i zera identyczne z niektórymi z tych z filtra 12 rzędu, na ryc. 1. Przybliżenie daje charakterystykę filtra: równowartość pasma przepustowego 3,14 dB, - Równoległe pasmo zatrzymania 27,69 dB, częstotliwość odcięcia 0,1234.

Rozumiem, że pasmo przejściowe dla koniowatych i pasmo oporowe dla koniowatych z tyloma pofałdowaniami, na ile pozwala liczba biegunów i zer, jest wystarczającym warunkiem stwierdzenia, że ​​filtr jest eliptyczny. Spróbujmy jednak, jeśli zostanie to potwierdzone poprzez zaprojektowanie filtru eliptycznego rzędu 4 za ellippomocą charakterystyki uzyskanej z ryc. 3 oraz poprzez porównanie biegunów i zer między dwoma filtrami rzędu 4:

[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
scatter(vertcat(real(ra4), real(rb4)), vertcat(imag(ra4), imag(rb4)));

To przeciwko:

scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");

Porównanie bieguna / zera filtra czwartego rzędu
Rysunek 5. Porównanie lokalizacji biegunów (czerwony) i zero (niebieski) między ellipzaprojektowanym filtrem czwartego rzędu (krzyże) a filtrem czwartego rzędu (koła), który dzieli określone lokalizacje biegunowe i zerowe z filtrem 12 rzędu. Oś pozioma: część rzeczywista, oś pionowa: część urojona.

Bieguny i zera pokrywają się między dwoma filtrami z dokładnością do trzech miejsc po przecinku, co było dokładnością charakteryzacji filtra uzyskanej z filtra rzędu 12. Wniosek jest taki, że przynajmniej w tym konkretnym przypadku zarówno bieguny, jak i zera filtru eliptycznego rzędu 4 i te z filtra eliptycznego rzędu 12 można było uzyskać, przynajmniej do dokładności, poprzez równomierne rozmieszczenie ich na tych samych krzywych parametrycznych . Filtry nie były filtrami typu Butterworth lub Chebyshev I lub II, ponieważ zarówno pasmo przepustowe, jak i pasmo zatrzymujące miały tętnienia.

Eliptyczny 4-go rzędu do eliptycznego 12-go rzędu

I odwrotnie, czy bieguny i zera filtra 12. rzędu można aproksymować z pary funkcji ciągłych dopasowanych do biegunów i zer ellipfiltra 4. rzędu ?

Jeśli zduplikujemy cztery bieguny (ryc. 5) i odwrócimy znak rzeczywistych części duplikatów, otrzymamy rodzaj owalu. Gdy okrążamy owal, lokalizacje biegunów, które mijamy, dają okresową dyskretną sekwencję. Jest dobrym kandydatem do okresowej interpolacji ograniczonej przez pasmo poprzez wypełnienie zerem dyskretnej transformaty Fouriera (DFT). Z powstałych24 bieguny te z dodatnią częścią rzeczywistą są odrzucane, zmniejszając o połowę liczbę biegunów 12. Zamiast zer ich odwrotności są interpolowane, ale w przeciwnym razie interpolacja odbywa się w taki sam sposób, jak w przypadku biegunów. Zaczynamy od tego samego ellipfiltra czwartego rzędu, co wcześniej (mniej więcej identycznie jak na ryc. 4):

pkg load signal;
[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
rb4eli = 1./rb4el;
[~, ira4el] = sort(imag(ra4el));
[~, irb4eli] = sort(imag(rb4eli));
ra4eld = vertcat(ra4el(ira4el), -ra4el(ira4el));
rb4elid = vertcat(rb4eli(irb4eli), -rb4eli(irb4eli));
ra12syn = -interpft(ra4eld, 24)(12:23);
rb12syn = -1./interpft(rb4elid, 24)(12:23);
freqs(poly(rb12syn), poly(ra12syn), [0:10000]/10000);

Wielkość odpowiedzi częstotliwościowej interpolowanego filtra 4-> 12. rzędu
Rysunek 6. Odpowiedź częstotliwościowa wielkości filtra 12 rzędu z biegunami i zerami próbkowanymi z krzywych dopasowanych do krzywych filtra 4 rzędu.

Nie jest wystarczająco dokładny model reakcji z ryc. 2, aby był użyteczny. Pasmo stopu radzi sobie całkiem nieźle, ale pasmo przenoszenia jest przechylone. Częstotliwości krawędzi pasma są w przybliżeniu prawidłowe. Mimo to pokazuje to potencjał, biorąc pod uwagę, że krzywe parametryczne zostały opisane jedynie za pomocą 4 stopni swobody.

Zobaczmy, jak bieguny i zera pasują do zer N.=12 ellip-generowany filtr:

[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)), "blue", "x");
scatter(vertcat(real(ra12syn), real(rb12syn)), vertcat(imag(ra12syn), imag(rb12syn)));

Porównanie biegunów i zer dla N = 12
Ryc. 7. Porównanie lokalizacji biegunów (czerwony) i zera (niebieski) między ellipzaprojektowanym filtrem 12 rzędu (krzyże) a filtrem 12 rzędu (koła), który został wyprowadzony z filtra 4 rzędu. Oś pozioma: część rzeczywista, oś pionowa: część urojona.

Interpolowane bieguny są nieco wyłączone, ale zera są stosunkowo dobrze dopasowane. WiększyN. jako punkt wyjścia należy zbadać.

Eliptyczny od 6 rzędu do 18-ty eliptyczny

Wykonanie tego samego, co powyżej, ale rozpoczęcie od szóstego rzędu i interpolacja do 18. rzędu pokazuje pozornie dobrze zachowaną charakterystykę częstotliwościową wielkości, ale nadal ma problemy w paśmie przejścia, gdy jest dokładnie badany:

[b6el, a6el] = ellip (6, 0.03, 30, 0.1234, "s");
rb6el = roots(b6el);
ra6el = roots(a6el);
rb6eli = 1./rb6el;
[~, ira6el] = sort(imag(ra6el));
[~, irb6eli] = sort(imag(rb6eli));
ra6eld = vertcat(ra6el(ira6el), -ra6el(ira6el));
rb6elid = vertcat(rb6eli(irb6eli), -rb6eli(irb6eli));
ra18syn = -interpft(ra6eld, 36)(18:35);
rb18syn = -1./interpft(rb6elid, 36)(18:35);
freqs(poly(rb18syn), poly(ra18syn), [0:10000]/10000);

Filtr <kod> elipsa </code> 6. rzędu
Filtr 18. rzędu pochodzący z
Ryc. 8. Góra) ellipFiltr generowany 6. rzędu , dół) Filtr 18. rzędu pochodzący z filtra 6. rzędu. W przybliżeniu pasmo przenoszenia ma tylko dwa maksima i około 1 dB tętnienia. Pasmo zatrzymania jest prawie równoważne z różnicą 2,5 dB.

Domyślam się, że problem z pasmem pasmowym polega na tym, że interpolacja ograniczona przez pasmo nie działa wystarczająco dobrze z (prawdziwymi częściami) biegunów.

Dokładne krzywe dla filtrów eliptycznych

Okazuje się, że dla tych filtrów eliptycznych N.N.z=N.N.p=N.podać pozytywne przykłady pytań 1 i 2. C. Sidney Burrus, Cyfrowe przetwarzanie sygnałów i Cyfrowe projektowanie filtrów (Szkic). OpenStax CNX. 18 listopada 2012 podaje zera i bieguny funkcji przenoszenia wystarczająco ogólnieN.N.z=N.N.p=N.filtr eliptyczny w ujęciu sinusoidalnym Jacobi sn(t,k). Zauważając to sn(t,k)=-sn(-t,k),Burrus Eq. 3.136 można przepisać na zeraszja, ja=1N. tak jak:

(1)szja=jotksn(K.+K.(2)ja+1)/N.,k),

gdzie K. jest kwartałem okresu sn(t,k) na serio t, i 0k1może być postrzegany jako stopień swobody w parametryzacji filtra. Kontroluje szerokość pasma przejścia względem szerokości pasma przejścia. Rozpoznawanie(2)ja+1)/N.=2)α (patrz równanie 2 pytania) gdzie α jest parametrem krzywej parametrycznej:

(2)faz(α)=jotksn(K.+2)K.α,k),

Burrus Eq. 3.146 podaje górne lewe słupy ćwierćpłaszczyznowe, w tym prawdziwy biegun nieparzystyN.. Można go przepisać dla wszystkich biegunówspja, ja=1N. z jakimkolwiek N. tak jak:

(3)spja=cn(K.+K.(2)ja+1)/N.,k)dn(K.+K.(2)ja+1)/N.,k)sn(ν0,1-k2))×cn(ν0,1-k2))+jotsn(K.+K.(2)ja+1)/N.,k)dn(ν0,1-k2))1-dn2)(K.+K.(2)ja+1)/N.,k)sn2)(ν0,1-k2)),

gdzie dn(t,k)=1-k2)sn2)(t,k)jest jedną z funkcji eliptycznych Jacobiego. Niektóre źródła mająk2)jako drugi argument dla wszystkich tych funkcji i nazwij go modułem. Mamyki nazwij to modułem. Zmienna0<ν0<K.´ można uznać za jeden z dwóch stopni swobody (k,ν0) wystarczająco ogólnych krzywych parametrycznych i jednego z trzech stopni swobody (k,ν0,N.)wystarczająco ogólnego filtra eliptycznego. Wν0=0 tętnienie pasma przepustowego byłoby nieskończone i wynosiło ν0=K.´ gdzie K.´ jest kwartałem okresu funkcji eliptycznych Jacobiego z modułem 1-k2), bieguny byłyby równe zerom. Przez wystarczająco ogólny rozumiem, że pozostaje tylko jeden stopień swobody, który kontroluje częstotliwość krawędzi pasma przepustowego i który przejawia się jako równomierne skalowanie obu funkcji krzywej parametrycznej o ten sam współczynnik. Podzbiór eliptycznych filtrów, które są wspólnefap(α), faz(α), i nieredukowalna frakcja N.z/P.z=1, są przekształcane w inny podzbiór o nieskończonej wielkości w wymiarze N. po zmianie trywialnego stopnia wolności.

Przez takie samo podstawienie jak zerami, krzywa parametryczna dla biegunów może być zapisana jako:

(4)fap(α)=cn(K.+2)K.α,k)dn(K.+2)K.α,k)sn(ν0,1-k2))×cn(ν0,1-k2))+jotsn(K.+2)K.α,k)dn(ν0,1-k2))1-dn2)(K.+2)K.α,k)sn2)(ν0,1-k2)).

Narysujmy funkcje i krzywe w Octave dla wartości k i ν0( v0w kodzie) skopiowane z Burrus Przykład 3.4:

k = 0.769231; 
v0 = 0.6059485; #Maximum is ellipke(1-k^2)
K = 1024; #Resolution of plots
[snv0, cnv0, dnv0] = ellipj(v0, 1-k^2);
dnv0=sqrt(1-(1-k^2)*snv0.^2); # Fix for Octave bug #43344
[sn, cn, dn] = ellipj([0:4*K-1]*ellipke(k^2)/K, k^2);
dn=sqrt(1-k^2*sn.^2); # Fix for Octave bug #43344
a2K = [0:4*K-1];
a2KpK = mod(K + a2K - 1, 4*K)+1;
fza = i./(k*sn(a2KpK));
fpa = (cn(a2KpK).*dn(a2KpK)*snv0*cnv0 + i*sn(a2KpK)*dnv0)./(1-dn(a2KpK).^2*snv0.^2);
plot(a2K/K/2, real(fza), a2K/K/2, imag(fza), a2K/K/2, real(fpa), a2K/K/2, imag(fpa));
ylim([-2,2]);
a = [1/6, 3/6, 5/6];
ai = round(a*2*K)+1;
scatter(vertcat(a, a), vertcat(real(fza(ai)), imag(fza(ai)))); ylim([-2,2]); xlim([0, 2]);
scatter(vertcat(a, a), vertcat(real(fpa(ai)), imag(fpa(ai))), "red", "x"); ylim([-2,2]); xlim([0, 2]);

Rozszerzenia analityczne funkcji krzywej parametrycznej dla Burrusa Przykład 3.4
Rycina 9. faz(α) i fap(α) dla Burrus Przykład 3.4, analitycznie przedłużony do okresu α=02). Trzy bieguny (czerwone krzyże) i trzy zera (niebieskie kółka, jeden nieskończony i nie pokazany) z przykładu są próbkowane równomiernie w odniesieniu doα w α=1/6, α=3)/6, i α=5/6,z tych funkcji, według Eq. 2 pytania. Z rozszerzeniem, odwrotnośćIm(faz(α))(nie pokazano) oscyluje bardzo delikatnie, co ułatwia przybliżenie za pomocą skróconej serii Fouriera, jak w poprzednich sekcjach. Pozostałe okresowe funkcje rozszerzone są również płynne, ale nie tak łatwe do przybliżenia w ten sposób.

plot(real(fpa)([1:2*K+1]), imag(fpa)([1:2*K+1]), real(fza)([1:2*K+1]), imag(fza)([1:2*K+1]));
xlim([-2, 2]);
ylim([-2, 2]);
scatter(real(fza(ai)), imag(fza(ai))); ylim([-2,2]); xlim([-2, 2]);
scatter(real(fpa(ai)), imag(fpa(ai)), "red", "x"); ylim([-2,2]); xlim([-2, 2]);

Krzywe parametryczne dla Burrusa Przykład 3.4
Rysunek 10. Krzywe parametryczne dla Burrusa Przykład 3.4. Oś pozioma: część rzeczywista, oś pionowa: część urojona. Ten widok nie pokazuje prędkości krzywej parametrycznej, więc trzy bieguny (czerwone krzyże) i trzy zera (niebieskie kółka, jeden nieskończony i nie pokazany) nie wydają się być równomiernie rozmieszczone na krzywych, nawet jeśli są, z w odniesieniu do parametruα krzywych parametrycznych.

Filtr eliptyczny według dokładnego bieguna i formuły zerowe podane przez Burrusa są w pełni równoważne próbkowaniu z dokładności fap(α) i faz(α), więc metody są równoważne i dostępne. Pytanie 1 pozostaje otwarte. Możliwe, że inne typy filtrów mają nieskończone podzbiory zdefiniowane przezfap(α) i faz(α) i N.z/N.p. Spośród metod przybliżania eliptycznych krzywych parametrycznych te, które nie zależą od dokładnej formy funkcjonalnej, mogą być przenoszone na inne typy filtrów, myślę, że najbardziej prawdopodobne są te, które uogólniają filtry eliptyczne, takie jak niektóre podzbiory ogólnych filtrów ekwiwalentnych. Dla nich dokładne wzory na bieguny i zera mogą być nieznane lub trudne do rozwiązania.

Wracając do Eq. 2, dla nieparzystychN.mamy dla jednego z zer α=0,5, który wysyła go do nieskończoności przez sn(2)K.,k)=0. Nie ma czegoś takiego z biegunami (równ. 4). Zaktualizowałem pytanie, aby uwzględnić takie zera (i bieguny, w przypadku)N.N.z (lub N.N.p). Wk=0, wszystkie zera przechodzą w nieskończoność zgodnie z faz(α), który wydaje się dać filtry typu I Czebyszewa.

Myślę, że pytanie 3 właśnie zostało rozwiązane, a odpowiedź brzmi „tak”. To, jak się wydaje, możemy objąć wszystkie przypadki filtra eliptycznego bez konfliktuN.N.z=N.N.p, z nową ich definicją.


Olli, i tak nie możesz dać sobie nagrody. twoje 500 punktów przepadło na zawsze. po prostu nie marnuj ich tak, jak kiedyś przypadkowo na stronie EE.SE.
Robert Bristol-Johnnson

Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
jojek

1
Tak, nadal tak jest, jest to szczególny przypadek w przypadku zamówień nieparzystych, gdy istnieje dodatkowy, pojedynczy, prawdziwy słup, rmi/(s+rmi), do funkcji przesyłania. Jeśli chodzi o funkcję wymierną zaczynającą się od zer, masz:
R(x)=jan/2)x2)-zmiroja2)jotn/2)x2)-k/zmirojot2)
, gdzie k=fas/fap. W przypadku zamówień nieparzystychR(x)=R(x)x. Spowoduje to, że filtr uzyska nienormalizowane wzmocnienie, więc należy go skalować wedługR(0). Polacy pochodzą z ekspansji1+ϵ2)R2)(x) i znajdowanie pierwiastków mianownika, następnie wybranie lewej strony i utworzenie funkcji przeniesienia.
zainteresowany obywatel

Nie byłem pewien, czy to powiedziałem. Aby włączyć funkcję przesyłania, nie trzeba naprawdę podążać za książką, robiącH.(s)H.(-s), następnie bieguny po lewej stronie, a następnie funkcja racjonalnego transferu zgodnie ze wzorem @ A_A. Matematycznie i praktycznym rezultatem jest to, że po znalezieniu korzeni1+ϵ2)R2)(x) (Uwaga: x, nie jotωlub s), po prostu wybierz pierwiastki z dodatnimi częściami rzeczywistymi i dodatnimi lub ujemnymi (nie oba). Tj. DlaN.=4, byłyby 4 pary / 8 biegunów; po selekcji masz 2 różne bieguny. Następnie po prostu:
N.(s)=jaN./2)|pja|2)
...
zainteresowany obywatel

(dla filtrów wielobiegunowych), gdzie p=σ+jotω, i
N.(s)=jaN./2)s2)+|zja|2)
, gdzie z=jotμ (dla filtrów zero-biegunowych), natomiast mianownik:
re(s)=jotN./2)s2)+2)Rmi(pjot)s+|pjot|2)
i
H.(s)=N.(s)re(s)
. Byłby to prototyp dolnoprzepustowy.
zainteresowany obywatel

0

Wydaje się, że większość uczestników tej dyskusji nie zna rodzaju filtra, który może być ich prawdziwym rozwiązaniem! Mianowicie filtry Paynter opracowane przez Henry'ego M. Payntera, który był profesorem w MIT i partnerem Philbrick Reseach. Są najlepszym podejściem do „filtrowania” średniej filtrującej i leczenia niedeterministycznych sygnałów wejściowych, znacznie lepiej niż Bessel-Thomson. Użyłem ich do zastosowań fizjologiczno-medycznych i sonarowych. Ich teorie znajdują się w wydaniach „Lightning Empiricist” w styczniu-lipcu i lipcu-październiku pod ogólnym tytułem: „Nowe podejście do projektowania aktywnych filtrów dolnoprzepustowych” autorstwa Petera D. Hansena Tabele podano dla biegunów drugiego , Filtry czwartego i szóstego rzędu. Obliczyłem to samo dla 8. rzędu.


I wydaje się, że przegapiłeś punkt OP: znaleźć Święty Graal formuł matematycznych, których można użyć do obliczenia dowolnego typu filtra (lub podobnego). :-)
zaniepokojony obywatel

0

Dodam tutaj kilka uwag, które mogą być przydatne, jeśli ktoś chce obliczyć limit N. z N.pierwiastek wielkości funkcji przeniesienia z wielokrotnością N.bieguny i zera rozmieszczone na dowolnych krzywych parametrycznych. Można to przybliżyć za pomocą dużegoN.oraz przez równomierne rozmieszczenie biegunów i zer w parametrze krzywej parametrycznej. Niestety w aproksymacji zawsze występuje nieskończony błąd w skali dB w lokalizacjach biegunów i zerach możliwej do zrealizowania funkcji przenoszenia. W tym sensie lepszym elementem budulcowym jest odcinek linii o jednorodnym biegunie lub zerowym rozkładzie wzdłuż jego długości. Biorąc pod uwagę tylkoN. zera, rozmieszczone w segmencie linii z punktem początkowym x0+y0ja i punkt końcowy x1+y1ja:

limN.|H.(0)|1/N.=01|(x0+y0ja)(1-α)+(x1+y1ja)α|reα=01((x0(1-α)+x1x)2)+(y0(1-α)+y1α)2))reα=mi01log((x0(1-α)+x1α)2)+(y0(1-α)+y1α)2))reα=mi((x0y1-x1y0)atan2(x0y1-x1y0,x0x1+y0y1)(x0-x1)2)+(y0-y1)2)-1)×(x02)+y02))(x1(x0-x1)+y0(y0-y1)+(x0-x1)2)2)((x0-x1)2)+(y0-y1)2)))×(x12)+y12))(x0(x1-x0)+y1(y1-y0)+(x1-x0)2)2)((x1-x0)2)+(y1-y0)2)))

Niektóre przypadki specjalne należy traktować osobno. Gdybyx0=0 i y0=0 musimy użyć limitu:

=mi-1x12)+y12)

Lub odwrotnie, jeśli x1=0 i y1=0:

=mi-1x02)+y02)

Lub jeśli segment linii ma zerową długość, x0=x1 i y0=y1, mamy zwykłe zero:

=x02)+y02)

Aby dokonać oceny przy różnych wartościach argumentów H.(z) lub H.(s), po prostu odejmij tę wartość od punktów początkowych i końcowych linii.

Jak to wygląda na płaszczyźnie złożonej: Rysunek 1. Wielkość funkcji przeniesienia z pojedynczym zerem. Stopnie 1 dB oznaczone są kolorem turkusowym, a stopnie 10 dB kolorem żółtym.Wielkość funkcji przenoszenia z pojedynczym zerem

Granica N-> inf N-tego pierwiastka wielkości funkcji przenoszenia z N zerami równomiernie rozmieszczonymi w segmencie linii
Rysunek 2. Limit N. z N.pierwiastek wielkości funkcji przeniesienia za pomocą N.zera równomiernie rozmieszczone w segmencie linii. W segmencie linii występuje załamanie, ale wartość nigdy nie spada do zera, jak w przypadku zwykłego, możliwego do zrealizowania zera. Przy wystarczającej odległości byłoby to normalne zero. Kod koloru jest taki sam jak na ryc. 1.

wprowadź opis zdjęcia tutaj
Ryc. 3. Przybliżenie ryc. 2 z wykorzystaniem dyskretnych zer: 5-ty pierwiastek wielkości wielomianu z 5 zerami rozmieszczonymi równomiernie na segmencie linii. W miejscu każdego zera wartość wynosi zero, ponieważ01/5=0.

Ryc. 1 i 2 zostały wygenerowane przy użyciu tego szkicu przetwarzania , z kodem źródłowym:

float[] dragPoints;
int dragPoint;
float dragPointBackup0, dragPointBackup1;
boolean dragging, activated;
PFont fnt;
PImage bg;
float pi = 2*acos(0.0);
int appW, appH;
float originX, originY, scale;

int numDragPoints = 2;

void setup() {
  appW = 600;
  appH = 400;
  originX = appW/2;
  originY = appH/2;
  scale = appH*7/16;
  size(600, 400);
  bg = createImage(appW, appH, RGB);
  dragging = false;
  dragPoint = -666;
  dragPoints = new float[numDragPoints*2]; 
  dragPoints[0] = originX-appW*0.125;
  dragPoints[1] = originY+appH*0.125;
  dragPoints[2] = originX+appW*0.125;
  dragPoints[3] = originY-appH*0.125;
  fnt = createFont("Arial",16,true);
  ellipseMode(RADIUS);
  activated = false;
}

void findDragPoint() {
  int cutoff = 49;
  int oldDragPoint = dragPoint;
  float dragPointD = 666666666;
  dragPoint = -666;
  for (int t = 0; t < numDragPoints; t++) {
    float d2 = (mouseX-dragPoints[t*2])*(mouseX-dragPoints[t*2]) + (mouseY-dragPoints[t*2+1])*(mouseY-dragPoints[t*2+1]);
    if (d2 <= dragPointD) {
       dragPointD = d2;
       if (dragPointD < cutoff) {
         dragPoint = t;
       }
    }
  }
  if (dragPoint != oldDragPoint) {
    loop();
  }
}

void mouseMoved() {
  if (activated) {
    if (!dragging) {
      findDragPoint();
      loop();
    }
  }
}

void mouseClicked() {
  if (dragPoint < 0) {
    activated = !activated;
    if (activated) {
      findDragPoint();      
    }
  }
  loop();
}

void mousePressed() {  
  if (dragPoint >= 0) {
    dragging = true;
    dragPointBackup0 = dragPoints[dragPoint*2];
    dragPointBackup1 = dragPoints[dragPoint*2+1];
  } else {
    dragging = false; // Not needed?
  }
  loop();
}

void mouseDragged() {
  if (!activated) {
    dragPoint = -666;
    activated = true;
    findDragPoint();
  }
  if (dragging) {
    int x = mouseX;
    int y = mouseY;
    if (x < 5) {
      x = 5;
    } else if (x >= appW - 5) {
      x = appW - 6;
    }
    if (y < 5) {
      y = 5;
    } else if (y >= appH - 5) {
      y = appH - 6;
    }
    dragPoints[dragPoint*2] = x;
    dragPoints[dragPoint*2+1] = y;
    loop();
  }  
}

void mouseReleased() {
  if (activated && dragging) {
    dragging = false;
    loop();
  }
}

float sign(float value) {
  if (value > 0) {
    return 1.0;
  } else if (value < 0) {
    return -1.0;
  } else {
    return 0;
  }
}

void draw() {
  for(int y = 0; y < appH; y++) {
    for(int x = 0; x < appW; x++) {
      float x0 = (dragPoints[0]-x)/scale;
      float y0 = (dragPoints[1]-y)/scale;
      float x1 = (dragPoints[2]-x)/scale;
      float y1 = (dragPoints[3]-y)/scale;
      float gain;
      if (x0 == x1 && y0 == y1) {
        gain = sqrt(x0*x0 + y0*y0);
      } else if (x0 == 0 && y0 == 0) {
        gain = exp(-1)*sqrt(x1*x1 + y1*y1);
      } else if (x1 == 0 && y1 == 0) {
        gain = exp(-1)*sqrt(x0*x0 + y0*y0);
      } else {
        gain = exp((x0*y1 - x1*y0)*atan2(x0*y1 - x1*y0, x0*x1 + y0*y1)/(sq(x0 - x1) + sq(y0 - y1)) - 1)*pow(x0*x0 + y0*y0, (x1*(x0 - x1) + y0*(y0 - y1) + sq(x0 - x1))/(2*(sq(x0 - x1) + sq(y0 - y1))))*pow(x1*x1 + y1*y1, (x0*(x1 - x0) + y1*(y1 - y0) + sq(x1 - x0))/(2*(sq(x1 - x0) + sq(y1 - y0))));
      }
      int intensity10 = round(log(gain)/log(10)*0x200)&0xff;
      int intensity1 = round(log(gain)/log(10)*(0x200*10))&0xff;
      bg.pixels[y*appW + x] = color(intensity10, 0xff, intensity1);
    }
  }
  image(bg, 0, 0);
  noFill();
  stroke(0, 0, 255);
  strokeWeight(1);
  line(dragPoints[0], dragPoints[1], dragPoints[2], dragPoints[3]);  

  //ellipse(originX, originY, scale, scale);  
  if (!activated) {
    textFont(fnt,16);
    fill(0, 0, 0);
    text("Click to activate",10,20);
    for (int x = 0; x < appW; x++) {
      color c = color(110*x/appW+128, 110*x/appW+128, 110*x/appW+128);
      set(x, 0, c);  
    }
    for (int y = 0; y < appH; y++) {
      color c = color(110*y/appH+128, 110*y/appH+128, 110*y/appH+128);
      set(0, y, c);  
    }
  }

  for (int u = 0; u < numDragPoints; u++) {
    stroke(0, 0, 255);
    if (dragPoint == u) {
      if (dragging) {
        fill(0, 0, 255);
        strokeWeight(3);
        ellipse(dragPoints[u*2], dragPoints[u*2+1], 5, 5);
      } else {
        noFill();
        strokeWeight(3);
        ellipse(dragPoints[u*2], dragPoints[u*2+1], 6, 6);
      }
    } else {
      //noFill();
      //strokeWeight(1);
      //ellipse(dragPoints[u*2], dragPoints[u*2+1], 6, 6);
    }
  }
  noLoop();
}
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.