12th order elliptic to 4th order elliptic
(I'm not eligible to the bounty.) I tried to produce a counterexample to question 3 in Octave but was pleasantly surprised that I couldn't. If the answer to the question 3 is yes, then according to Fig 5. of the question, specific poles and zeros should be shared between an elliptic filter of order 4 and an elliptic filter of order 12, here shown explicitly:
Figure 1. Poles and zeros potentially shared between elliptic filters of order N=12 and N=4, in blue and numbered in order of ascending parameter α of a parametric curve f(α).
Let's design an order 12 elliptic filter with some arbitrary parameters: 1 dB pass band ripple, -90 dB stop band ripple, cutoff frequency 0.1234, s-plane rather than z-plane:
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);
Figure 2. The magnitude frequency response of the 12th order elliptic filter designed using ellip
.
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));
Figure 3. Poles (red) and zeros (blue) of order 12 elliptic filter designed using ellip
. Horizontal axis: real part, vertical axis: imaginary part.
Let's construct an order 4 filter by reusing select poles and zeros of the order 12 filter, per Fig. 1. In the particular case, ordering the poles and zeros by the imaginary part is sufficient:
[~, 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);
Figure 4. Réponse en fréquence d'amplitude du filtre de 4e ordre qui a tous les pôles et les zéros identiques à certains de ceux du filtre de 12e ordre, selon la figure 1. Le zoom avant donne une caractérisation du filtre: équiripple de bande passante de 3,14 dB, - Equiripple de bande d'arrêt de 27,69 dB, fréquence de coupure 0,1234.
Je crois comprendre qu'une bande passante équiripple et une bande stop équiripple avec autant d'ondulations que le nombre de pôles et de zéros le permet est une condition suffisante pour dire que le filtre est elliptique. Mais essayons si cela est confirmé en concevant un filtre elliptique d'ordre 4 ellip
avec la caractérisation obtenue à partir de la figure 3 et en comparant les pôles et les zéros entre les deux filtres d'ordre 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)));
Cela contre:
scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");
Figure 5. Comparaison des emplacements des pôles (rouge) et zéro (bleu) entre un ellip
filtre de 4e ordre (croix) et un filtre de 4e ordre (cercles) qui partage certains emplacements de pôle et zéro avec le filtre de 12e ordre. Axe horizontal: partie réelle, axe vertical: partie imaginaire.
Les pôles et les zéros coïncident entre les deux filtres à trois décimales, ce qui était la précision de la caractérisation du filtre dérivée du filtre d'ordre 12. La conclusion est qu'au moins dans ce cas particulier, les pôles et les zéros du filtre elliptique d'ordre 4 et ceux du filtre elliptique d'ordre 12 auraient pu être obtenus, au moins jusqu'à une précision, en les répartissant uniformément sur les mêmes courbes paramétriques . Les filtres n'étaient pas des filtres de type Butterworth ou Chebyshev I ou II car la bande passante et la bande d'arrêt avaient des ondulations.
Elliptique du 4ème ordre au elliptique du 12ème ordre
Inversement, les pôles et les zéros du filtre du 12e ordre peuvent-ils être approximés à partir d'une paire de fonctions continues ajustées aux pôles et aux zéros du ellip
filtre du 4e ordre ?
Si nous dupliquons les quatre pôles (Fig. 5) et retournons le signe des parties réelles des doublons, nous obtenons une sorte d'ovale. Au fur et à mesure que nous tournons autour de l'ovale, les emplacements des pôles que nous passons donnent une séquence discrète périodique. C'est un bon candidat pour une interpolation périodique à bande limitée par remplissage nul de sa transformée de Fourier discrète (DFT). Du résultat24 les pôles dont la partie réelle est positive sont éliminés, ce qui réduit de moitié le nombre de pôles 12. Au lieu des zéros, leurs inverses sont interpolées, mais sinon l'interpolation se fait de la même manière qu'avec les pôles. Nous commençons avec le même ellip
filtre de 4ème ordre que précédemment (approximativement identique à la figure 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);
Figure 6. Réponse en fréquence d'amplitude d'un filtre du 12e ordre avec les pôles et les zéros échantillonnés à partir des courbes correspondant à ceux du filtre du 4e ordre.
Il ne s'agit pas d'une maquette suffisamment précise de la réponse de la figure 2 pour être utile. La bande d'arrêt se porte plutôt bien mais la bande passante est inclinée. Les fréquences de front de bande sont approximativement correctes. Pourtant, cela montre un potentiel étant donné que les courbes paramétriques n'ont été décrites que par 4 degrés de liberté chacune.
Voyons comment les pôles et les zéros correspondent à ceux du N= 12 ellip
-filtre généré:
[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)));
Figure 7. Comparaison des emplacements des pôles (rouge) et zéro (bleu) entre un ellip
filtre du 12e ordre (croix) et un filtre du 12e ordre (cercles) dérivé du filtre du 4e ordre. Axe horizontal: partie réelle, axe vertical: partie imaginaire.
Les pôles interpolés sont assez éloignés, mais les zéros correspondent relativement bien. Un plus grandN comme point de départ doit être étudié.
Elliptique du 6e ordre au elliptique du 18e ordre
Faire la même chose que ci-dessus mais en commençant au 6e ordre et en interpolant au 18e ordre montre une réponse en fréquence d'amplitude apparemment bien comportée, mais a toujours des problèmes dans la bande passante lorsqu'on l'examine de près:
[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);
Figure 8. Haut) ellip
Filtre généré par le 6e ordre , Bas) Filtre 18e ordre dérivé du filtre 6e ordre. Zoomé, la bande passante n'a que deux maxima et environ 1 dB d'ondulation. La bande d'arrêt est presque équiripple avec 2,5 dB de variation.
Je suppose que le problème au niveau de la bande passante est que l'interpolation limitée à la bande ne fonctionne pas assez bien avec les (parties réelles des) pôles.
Courbes exactes pour les filtres elliptiques
Il s'avère que les filtres elliptiques pour lesquels NNz= NNp= Nfournir des exemples positifs aux questions 1 et 2. C. Sidney Burrus, Traitement numérique du signal et conception de filtres numériques (ébauche). OpenStax CNX. Le 18 novembre 2012 donne les zéros et les pôles de la fonction de transfert d'un système suffisamment généralNNz= NNp= Nfiltre elliptique en termes de sinus elliptique de Jacobi sn( t , k ) . En notant que sn( t , k ) = - sn( - t , k ) ,Burrus Eq. 3.136 peut être réécrit pour des zérosszje, i = 1 … N comme:
szje= jk sn( K+ K( 2 i + 1 ) / N, k ),(1)
où K est un quart de sn( t , k ) pour de vrai t, et 0 ≤ k ≤ 1peut être vu comme un degré de liberté dans le paramétrage du filtre. Il contrôle la largeur de bande de transition par rapport à la largeur de bande de passage. Reconnaître( 2 i + 1 ) / N= 2 α (voir Eq. 2 de la question) où α est le paramètre de la courbe paramétrique:
Fz( α ) = jk sn( K+ 2 Kα , k ),(2)
Burrus Eq. 3.146 donne les pôles quart de plan supérieur gauche, y compris un vrai pôle pour les impairsN. Il peut être réécrit pour tous les pôlessp i, i = 1 … N avec tout N comme:
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)
où dn( t , k ) = 1 - k2sn2( t , k )------------√est l'une des fonctions elliptiques de Jacobi. Certaines sources ontk2comme deuxième argument pour toutes ces fonctions et l'appeler le module. Nous avonsket appelez-le le module. La variable0 < ν0< K´ can be thought of as one of the two degrees of freedom (k,ν0) of the sufficiently general parametric curves, and one of the three degrees of freedom (k,ν0,N) of a sufficiently general elliptic filter. At ν0=0 the pass band ripple would be infinite and at ν0=K´ where K´ is the quarter period of Jacobi elliptic functions with modulus 1−k2−−−−−√, poles would equal zeros. By sufficiently general I mean that there is just one remaining degree of freedom that controls the pass band edge frequency and which will manifest itself as uniform scaling of both parametric curve functions by the same factor. The subset of elliptic filters that share fp(α), fz(α), and an irreducible fraction Nz/Pz=1, are transformed to another subset of infinite size in dimension N upon change of the trivial degree of freedom.
By the same substitution as with the zeros, the parametric curve for the poles can be written as:
fp(α)=cn(K+2Kα,k)dn(K+2Kα,k)sn(ν0,1−k2−−−−−√)×cn(ν0,1−k2−−−−−√)+jsn(K+2Kα,k)dn(ν0,1−k2−−−−−√)1−dn2(K+2Kα,k)sn2(ν0,1−k2−−−−−√).(4)
Let's plot the functions and the curves in Octave, for values of k and ν0 (v0
in the code) copied from Burrus Example 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]);
Figure 9. fz(α) and fp(α) for Burrus Example 3.4, analytically extended to period α=0…2. The three poles (red crosses) and the three zeros (blue circles, one infinite and not shown) of the example are sampled uniformly with respect to α at α=1/6, α=3/6, and α=5/6, from these functions, per Eq. 2 of the question. With the extension, the reciprocal of Im(fz(α)) (not shown) oscillates very gently, making it easy to approximate by a truncated Fourier series as in the previous sections. The other periodic extended functions are also smooth, but not so easy to approximate that way.
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]);
Figure 10. Parametric curves for Burrus Example 3.4. Horizontal axis: real part, vertical axis: imaginary part. This view does not show the speed of the parametric curve so the three poles (red crosses) and the three zeros (blue circles, one infinite and not shown) do not appear to be uniformly distributed on the curves, even as they are, with respect to the parameter α of the parametric curves.
Elliptic filter design by the exact pole and zero formulas given by Burrus is fully equivalent to sampling from the exact fp(α) and fz(α), so methods are equivalent and available. Question 1 remains open-ended. It may be that other types of filters have infinite subsets defined by fp(α) and fz(α) and Nz/Np. Of methods of approximating the elliptic parametric curves, those that do not depend on the exact functional form may be transferable to other filter types, I think most likely to those that generalize elliptic filters, such as some subset of general equiripple filters. For them, exact formulas for poles and zeros may be unknown or intractable.
Going back to Eq. 2, for odd N, we have for one of the zeros α=0.5, which sends it to infinity by sn(2K,k)=0. No such thing takes place with the poles (Eq. 4). I have updated the question to have such zeros (and poles, in case) included in the count NNz (or NNp). At k=0, all zeros go to infinity according to fz(α), which looks to give type I Chebyshev filters.
I think question 3 just got resolved and the answer is "yes". That, as it appears that we can cover all cases of elliptic filter without being in conflict with NNz=NNp, with the new definition of those.