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ądku
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);
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)));
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);
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 ellip
pomocą 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");
Rysunek 5. Porównanie lokalizacji biegunów (czerwony) i zero (niebieski) między ellip
zaprojektowanym 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 ellip
filtra 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 ellip
filtra 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);
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)));
Ryc. 7. Porównanie lokalizacji biegunów (czerwony) i zera (niebieski) między ellip
zaprojektowanym 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);
Ryc. 8. Góra) ellip
Filtr 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= NN.p= Npodać 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= NN.p= Nfiltr 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, i = 1 … N tak jak:
szja= jk sn( K+ K( 2 i + 1 ) / N, k ),(1)
gdzie K. jest kwartałem okresu sn( t , k ) na serio t, i 0 ≤ k ≤ 1może być postrzegany jako stopień swobody w parametryzacji filtra. Kontroluje szerokość pasma przejścia względem szerokości pasma przejścia. Rozpoznawanie( 2 i + 1 ) / N= 2 α (patrz równanie 2 pytania) gdzie α jest parametrem krzywej parametrycznej:
faz( α ) = jk sn( K+ 2 K.α , k ),(2)
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ówsp i, i = 1 … N z jakimkolwiek N. tak jak:
sp i= cn( K+ K( 2 i + 1 ) / N, k ) dn( K+ K( 2 i + 1 ) / N, k ) sn( ν0, 1 - k2)-----√)× cn( ν0, 1 - k2)-----√) +jsn( K+ K( 2 i + 1 ) / N, k ) dn( ν0, 1 - k2)-----√)1 - dn2)( K+ K( 2 i + 1 ) / N, k ) sn2)( ν0, 1 - k2)-----√),(3)
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/ Pz= 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:
fap( α ) = cn( K+ 2 K.α , k ) dn( K+ 2 K.α , k ) sn( ν0, 1 - k2)-----√)× cn( ν0, 1 - k2)-----√) +jsn( K+ 2 K.α , k ) dn( ν0, 1 - k2)-----√)1 - dn2)( K+ 2 K.α , k ) sn2)( ν0, 1 - k2)-----√).(4)
Narysujmy funkcje i krzywe w Octave dla wartości k i ν0( v0
w 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]);
Rycina 9. faz( α ) i fap( α ) dla Burrus Przykład 3.4, analitycznie przedłużony do okresu α = 0 … 2. 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( fz( α ) )(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]);
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/ Np. 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( 2K., 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= NN.p, z nową ich definicją.