12 वें क्रम के अण्डाकार से 4 वें क्रम के अण्डाकार
(मैं इनाम के योग्य नहीं हूं।) मैंने ऑक्टेव में प्रश्न 3 के लिए एक प्रतिरूप उत्पादन करने की कोशिश की, लेकिन सुखद आश्चर्यचकित था कि मैं नहीं कर सकता था। यदि प्रश्न 3 का उत्तर हां है, तो प्रश्न 5 की आकृति 5 के अनुसार, विशिष्ट ध्रुवों और शून्य को क्रम 4 के अण्डाकार फिल्टर और क्रम 12 के अण्डाकार फिल्टर के बीच साझा किया जाना चाहिए, यहां स्पष्ट रूप से दिखाया गया है:
चित्र / ध्रुव और शून्य संभावित रूप से आदेश के अण्डाकार फिल्टर के बीच साझा किया जाता है
एन= 12 तथा एन= 4, नीले रंग में और आरोही पैरामीटर के क्रम में गिने α पैरामीट्रिक वक्र का च( α )।
आइए एक ऑर्डर 12 अण्डाकार फ़िल्टर को कुछ मनमाने मापदंडों के साथ डिज़ाइन करें: 1 dB पास बैंड रिपल, -90 dB स्टॉप बैंड रिपल, कटऑफ़ फ़्रीक्वेंसी 0.1234, s-plane बजाय 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);
चित्रा 2. 12 वें क्रम के अण्डाकार फ़िल्टर का परिमाण आवृत्ति प्रतिक्रिया का उपयोग करके डिज़ाइन किया गया ellip
।
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));
चित्रा 3. डंडे (लाल) और शून्य (नीला) क्रम 12 अण्डाकार फिल्टर का उपयोग करके डिज़ाइन किया गया ellip
। क्षैतिज अक्ष: वास्तविक भाग, ऊर्ध्वाधर अक्ष: काल्पनिक भाग।
आइए १२ फिल्टर, प्रति अंजीर के चुनिंदा डंडे और शून्य का पुन: उपयोग करके एक ऑर्डर ४ फिल्टर का निर्माण करें। १. विशेष मामले में, काल्पनिक भाग द्वारा ध्रुवों और शून्य का ऑर्डर करना पर्याप्त है:
[~, 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);
चित्रा 4. 12 वें क्रम फ़िल्टर, प्रति अंजीर के कुछ लोगों के लिए सभी ध्रुवों और शून्य के समान 4 क्रम के फिल्टर की चुंबक आवृत्ति प्रतिक्रिया। 27.69 डीबी स्टॉप बैंड इक्विरिपल, कटऑफ आवृत्ति 0.1234।
यह मेरी समझ है कि एक समीपवर्ती पास बैंड और एक समीपस्थ स्टॉप बैंड के साथ कई तरंगों के रूप में डंडे और शून्य की संख्या की अनुमति देता है यह कहने के लिए एक पर्याप्त शर्त है कि फ़िल्टर दीर्घवृत्त है। लेकिन आइए देखें कि क्या यह एक ऑर्डर 4 अण्डाकार फ़िल्टर ellip
को अंजीर 3 से प्राप्त चरित्रांकन के साथ और दो क्रम 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)));
इसके खिलाफ:
scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");
चित्रा 5. ध्रुव (लाल) और शून्य (नीला) स्थानों की तुलना एक- ellip
डिज़ाइन किए गए 4 वें क्रम फ़िल्टर (क्रॉस) और एक 4 वें क्रम फ़िल्टर (सर्कल) के बीच होती है जो कुछ ध्रुव और शून्य स्थानों को 12 वें क्रम फ़िल्टर के साथ साझा करता है। क्षैतिज अक्ष: वास्तविक भाग, ऊर्ध्वाधर अक्ष: काल्पनिक भाग।
ध्रुव और शून्य दो फिल्टर के बीच तीन दशमलव स्थानों पर मेल खाते हैं, जो क्रम 12 फिल्टर से प्राप्त फिल्टर के लक्षण वर्णन की सटीकता थी। निष्कर्ष यह है कि कम से कम इस विशेष मामले में आदेश 4 अण्डाकार फिल्टर के डंडे और शून्य दोनों और क्रम 12 अण्डाकार फिल्टर के उन प्राप्त किया जा सकता है, कम से कम एक परिशुद्धता के लिए, समान रूप से एक ही पैरामीट्रिक घटता पर उन्हें वितरित करके । फिल्टर बटरवर्थ या चेबिशे I या II प्रकार के फिल्टर नहीं थे क्योंकि दोनों पास बैंड और स्टॉप बैंड में रिपल थे।
4 वें क्रम के अण्डाकार से 12 वें क्रम के अण्डाकार
इसके विपरीत, क्या 12 वें क्रम के फिल्टर के खंभे और शून्य को 4 वें क्रम के ellip
फिल्टर के ध्रुवों और शून्य में लगे निरंतर कार्यों की एक जोड़ी से लगाया जा सकता है ?
यदि हम चार डंडे (छवि 5) की नकल करते हैं और डुप्लिकेट के वास्तविक भागों के संकेत को फ्लिप करते हैं, तो हमें एक प्रकार का अंडाकार मिलता है। जैसा कि हम अंडाकार गोल और गोल करते हैं, जो पोल स्थान हम पास करते हैं वे एक आवधिक असतत अनुक्रम देते हैं। यह अपने असतत फूरियर रूपांतरण (डीएफटी) को शून्य-पैडिंग करके आवधिक बैंड-सीमित प्रक्षेप के लिए एक अच्छा उम्मीदवार है। परिणाम का24 डंडे एक सकारात्मक वास्तविक भाग के साथ छोड़ दिए जाते हैं, डंडे की संख्या को आधा कर देते हैं 12। शून्य के बजाय, उनके पारस्परिक अंतर प्रक्षेपित होते हैं, लेकिन अन्यथा प्रक्षेप ध्रुवों के साथ उसी तरह किया जाता है। हम ellip
पहले से डिज़ाइन किए गए 4 के क्रम के फ़िल्टर के साथ शुरू करते हैं (चित्र 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);
चित्रा 6. ध्रुवों और शून्य से नमूने के साथ 12 वें क्रम के फिल्टर की मैग्नीट्यूड फ्रीक्वेंसी प्रतिक्रिया, जो कि 4 वें फिल्टर फिल्टर से मेल खाती है।
यह अंजीर के मॉकअप का एक सटीक पर्याप्त नहीं है। उपयोगी होने के लिए 2 प्रतिक्रिया। स्टॉप बैंड का किराया बहुत अच्छा है लेकिन पास बैंड झुका हुआ है। बैंड एज फ़्रीक्वेंसी लगभग सही हैं। फिर भी, यह संभावना दर्शाता है कि पैरामीट्रिक वक्रों को केवल स्वतंत्रता के 4 डिग्री द्वारा वर्णित किया गया था।
आइए नजर डालते हैं कि डंडे और शून्य किस तरह मेल खाते हैं एन= 12 ellip
-अच्छे फ़िल्टर
[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)));
चित्रा 7. ध्रुव (लाल) और शून्य (नीला) स्थानों की तुलना एक- डिज़ाइन किए गए 12 वें क्रम फ़िल्टर (क्रॉस) और एक 12 वें क्रम फ़िल्टर (सर्कल) के बीच के स्थानों ellip
से होती है जो 4 वें क्रम फ़िल्टर से प्राप्त हुई थी। क्षैतिज अक्ष: वास्तविक भाग, ऊर्ध्वाधर अक्ष: काल्पनिक भाग।
प्रक्षेपित पोल काफी हद तक बंद हैं, लेकिन शून्य अपेक्षाकृत अच्छी तरह से मेल खाते हैं। अपेक्षाकृत व्यापकएन प्रारंभिक बिंदु के रूप में जांच की जानी चाहिए।
6 वें क्रम अण्डाकार 18 वीं क्रम अण्डाकार
उपरोक्त के समान ही करना लेकिन 6 ठी क्रम पर शुरू करना और 18 वाँ क्रम में प्रक्षेपित करना एक अच्छी तरह से व्यवहार किए गए परिमाण आवृत्ति प्रतिक्रिया को दर्शाता है, लेकिन फिर भी पास बैंड में परेशानी होती है जब बारीकी से जांच की जाती है:
[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);
चित्र 8. शीर्ष) 6 ellip
वाँ क्रम- फ़िल्टर किए गए फ़िल्टर, नीचे) 18 वां क्रम फ़िल्टर 6 वें क्रम फ़िल्टर से प्राप्त हुआ। इसमें जूम किया गया, पास बैंड में केवल दो मैक्सिमा और लगभग 1 डीबी रिपल है। स्टॉप बैंड लगभग 2.5 डीबी की विविधता के साथ लगभग समान है।
पास बैंड पर परेशानी के बारे में मेरा अनुमान है कि बैंड-सीमित प्रक्षेप ध्रुवों के (वास्तविक भागों) के साथ पर्याप्त रूप से काम नहीं कर रहा है।
अण्डाकार फिल्टर के लिए सटीक घटता
यह उस अण्डाकार फ़िल्टर को बताता है जिसके लिए एनएनz= एनएनपी= एनप्रश्न 1 और 2. सी। सिडनी बुरुस, डिजिटल सिग्नल प्रोसेसिंग और डिजिटल फ़िल्टर डिज़ाइन (ड्राफ्ट) के सकारात्मक उदाहरण प्रदान करें । ओपनस्टैक्स CNX। 18 नवंबर, 2012 पर्याप्त रूप से सामान्य के हस्तांतरण समारोह के शून्य और ध्रुव देता हैएनएनz= एनएनपी= एनजैकोबी अण्डाकार साइन के संदर्भ में अण्डाकार फ़िल्टर एस.एन.( टी , के ) । नोट किया कि एस.एन.( t , k ) = - एस.एन.( - टी , के ) ,बर्रुस इक। 3.136 को शून्य के लिए फिर से लिखा जा सकता हैरोंzमैं, i = 1 … एन जैसा:
रोंzमैं= जेk Sn( के+K(2i+1)/N,k),(1)
where K is a quarter period of sn(t,k) for real t, and 0≤k≤1 can be seen as a degree of freedom in the parameterization of the filter. It controls the transition band width relative to pass band width. Recognizing (2i+1)/N=2α (see Eq. 2 of the question) where α is the parameter of the parametric curve:
fz(α)=jksn(K+2Kα,k),(2)
Burrus Eq. 3.146 gives the upper-left quarter-plane poles including a real pole for odd N. It can be rewritten for all poles spi, i=1…N with any N as:
spi=cn(K+K(2i+1)/N,k)dn(K+K(2i+1)/N,k)sn(ν0,1−k2−−−−−√)×cn(ν0,1−k2−−−−−√)+jsn(K+K(2i+1)/N,k)dn(ν0,1−k2−−−−−√)1−dn2(K+K(2i+1)/N,k)sn2(ν0,1−k2−−−−−√),(3)
where dn(t,k)=1−k2sn2(t,k)−−−−−−−−−−−−√ is one of the Jacobi elliptic functions. Some sources have k2 as the second argument for all of these functions and call it the modulus. We have k and call it the modulus. The variable 0<ν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.