21.2 Meciul # 2: Windowed-Sinc vs. Chebyshev

Atât filtrele windowed-sinc, cât și cele Chebyshev sunt proiectate să distingă o bandă de frecvențe de alta. Windowed-sinc este un filtru FIR implementat prin convoluție, în timp ce Chebyshev este un filtru IIR realizat prin recursiune. Care este cel mai bun filtru digital din domeniul frecvență? Le vom lăsa să se lupte.

Concurentul filtru recursiv va fi un filtru low-pass Chebyshev cu 6 poli, cu ripplu de 0,5%. O comparație corectă este complicată de faptul că răspunsul în frecvență al lui Chebyshev se modifică cu frecvența cutoff. Vom folosi o frecvență cutoff de 0,2 și vom selecta kernelul de filtru windowed-sinc să fie 51 de puncte. Acest lucru face ca ambele filtre să aibă aceeași roll-off de 90% la 10%, așa cum se arată în figura 21-2 (a).

Filtrul recursiv are un ripplu de 0,5% în banda de trecere, în timp ce windowed-sinc este plat. Totuși, am putea seta cu ușurință ripplul filtrului recursiv la 0% dacă este necesar. Nici o problemă. Figura 21-2b arată că windowed-sinc are o atenuare în stopband mult mai bună decât Chebyshev. Un punct pentru windowed-sinc.

Figura 21-3 prezintă răspunsul la treaptă al celor două filtre. Ambele sunt rele, așa cum era de așteptat pentru filtrele din domeniul frecvență. Filtrul recursiv are o fază neliniară, dar aceasta poate fi corectată prin filtrare bidirecțională. Deoarece ambele filtre sunt atât de neplăcute în acest parametru, vom numi acest lucru o remiză.

Până acum, nu există o mare diferență între aceste două filtre; fiecare va lucra atunci când sunt necesare performanțe moderate. Loviturile grele vin pe două probleme critice: performanța maximă și viteza maximă. Windowed-sinc este un centru de putere, în timp ce Chebyshev este rapid și agil. Presupuneți că aveți o problemă foarte dificilă de separare a frecvențelor, să zicem, necesitatea de a izola un semnal de 100 mV la 61 Hz care călătoresc pe o linie de alimentare de 120 V la 60 Hz. Figura 21-4 arată cum se compară aceste două filtre atunci când aveți nevoie de performanțe maxime. Filtrul recursiv este un Chebyshev cu 6 poli, cu un ripplu de 0,5%. Acesta este numărul maxim de poli care pot fi utilizați la o frecvență cutoff de 0,05 cu o simplă precizie. Windowed-sinc utilizează un kernel filtru de 1001 puncte, format prin convoluția unui kernel de filtru windowed-sinc de 501 puncte cu el însuși. Așa cum se arată în capitolul 16, acesta oferă o atenuare mai mare în stopband.

Figura 21-2 Răspunsurile în frecvență ale filtrelor windowed-sinc și Chebyshev.
Răspunsurile în frecvență sunt prezentate pentru un filtru windowed-sinc de 51 puncte și un filtru recursiv Chebyshev cu 6 poli și 0,5 ripplu. Windowed-sinc are atenuarea în stopband mai bună, dar va lucra în aplicații cu performanțe moderate. Frecvența cuttoff a ambelor filtre este 0,2, măsurată la o amplitudine de 0,5 pentru windowed-sinc, și 0,707 pentru recursiv.

Figura 21-3 Răspunsurile la treaptă ale filtrelor windowed-sinc și Chebyshev.
Răspunsurile la treaptă sunt prezentate pentru un filtru windowed-sinc de 51 puncte și un filtru recursiv Chebyshev cu 6 poli și 0,5 ripplu. Frecvența cutoff a ambelor filtre este 0,2. Windowed-sinc are un răspuns la treaptă ușor mai bun, deoarece are mai puțină overshoot și o fază zero.

Cum se compară aceste două filtre atunci când este necesară o performanță maximă? Windowed-sinc sfărâmă Chebysev-ul! Chiar dacă filtrul recursiv a fost îmbunătățit (mai mulți poli, implementare multi-etaje, dublă precizie etc.), acesta încă nu egalează performanța FIR. Acest lucru este deosebit de impresionant atunci când considerați că windowed-sinc doar a început să lupte. Există limite puternice ale performanței maxime pe care filtrele recursive le pot oferi. În contrast, la windowed-sinc, pot fi împinse la nivele incredibile. Aceasta, bineînțeles, dacă sunteți dispus să așteptați rezultatul. Ceea ce aduce cea de-a doua problemă critică: viteza.

Figura 21-4 Performanța maximă a filtrelor FIR și IIR.

Răspunsul în frecvență al windowed-sinc poate fi virtual orice formă necesară, în timp ce filtrul recursiv Chebyshev este foarte limitat.
Acest grafic compară răspunsul în frecvență a unui filtru recursiv Chebyshev cu 6 poli cu un filtru
windowed-sinc de 1001 puncte.

Figura 21-5 Comparația vitezei de execuție FIR și IIR.

Aceste curbe arată timpii de execuție relativi pentru un filtru windowed-sinc comparat cu un filtru recursiv Chebyshev cu 6 poli echivalent. Curbele sunt prezentate pentru implementarea filtrului FIR cu algoritmi de convoluție standard și FFT. Timpul de execuție pentru windowed-sinc crește la frecvențe joase și înalte deoarece kernelul filtrului trebuie făcut mai lung pentru a se menține cu performanța mai mare a filtrului recursiv la aceste frecvențe. În general, filtrele IIR sunt cu un ordin de mărime mai rapide decât filtrele FIR la performanțe comparabile.

Comparând aceste filtre în viteză este ca și cum ai concura un Ferrari împotriva unui cartuș. Figura 21-5 arată cât de mult durează executarea windowed-sinc, în comparație cu un filtru recursiv cu șase poli. Deoarece filtrul recursiv are o roll-off mai rapidă la frecvențe joase și înalte, lungimea kernelului windowed-sinc trebuie să fie mai lungă pentru a egala performanța (adică, pentru a menține corectitudinea comparației). Aceasta explică timpul de execuție crescut pentru windowed-sinc în apropierea frecvențelor 0 și 0,5. Ideea importantă este că filtrele FIR pot fi de aproximativ un ordin de mărime mai lent decât filtrele IIR comparabile (cartuș: 15 mph, Ferrari: 150 mph - mile pe oră).

Secțiunea următoare: Meciul # 3: Media mobilă vs. Un singur pol