16.4 Impingere la limită

Filtrul windowed-sinc poate fi împins la nivele incredibile de performanță fără surprize urâte. De exemplu, presupunem că trebuie să izolați un semnal de 1 milivolt pe o linie de alimentare de 120 volți . Filtrul trece-jos va avea nevoie de o atenuare în stopband de cel puțin -120dB (o parte într-un milion pentru cei care refuză să învețe decibeli). După cum am arătat anterior, fereastra Blackman oferă doar -74dB (o parte din cinci mii). Din fericire, atenuarea mai mare în stopband este ușor de obținut. Semnalul de intrare poate fi filtrat utilizând un kernel de filtru convențional windowed-sinc, furnizând un semnal intermediar. Semnalul intermediar poate fi apoi trecut prin filtru pentru a doua oară, mărind în continuare atenuarea benzii de oprire la -148dB (1 parte în 30 de milioane, wow!).

De asemenea, este posibilă combinarea celor două etape într-un singur filtru. Kernelul filtrului combinat este egal cu convoluția kernelurilor de filtrare ale celor două etape. De asemenea, convoluția oricărui nucleu de filtru cu el însuși rezultă într-un kernel de filtrare cu o atenuare în stopband mult îmbunătățită. Prețul pe care îl plătiți este un kernel de filtru mai lung și o roll-off mai lentă. Figura 16-7a prezintă răspunsul în frecvență al unui filtru low-pass de 201 puncte, format prin convoluția unui windowed-sinc Blackman de 101 puncte cu el însuși. Performanță uimitoare! (Dacă aveți într-adevăr nevoie de mai mult de -100dB de atenuare în stopband, ar trebui să utilizați dublă precizie. Zgomotul de rotunjire în simplă precizie asupra semnalelor din passband poate apărea haotic în banda de oprire cu amplitudine în intervalul -100dB până la -120dB).

Figura 16-7 Incredibila performanță a filtrului windowed-sinc.
Figura (a) prezintă răspunsul în frecvență al unui filtru windowed-sinc cu atenuare în stopband crescută. Aceasta este realizată prin convoluția unui nucleu de filtru windowed-sinc cu el însuși. Figura (b) arată roll-off-ul foarte rapid al unui filtru windowed-sinc de 32.000 de puncte.

Figura 16-7b arată un alt exemplu de performanță incredibilă a filtrului windowed-sinc: un filtru low-pass cu 32001 puncte în kernel. Răspunsul în frecvență apare conform așteptărilor, cu o roll-off de 0,000125 din rata de eșantionare. Cat de bun este acest filtru? Încercați să construiți un filtru electronic analogic care trece semnale de la DC la 1000 Hz cu o variație mai mică de 0,02% și blochează toate frecvențele de peste 1001 Hz cu reziduuri mai mici de 0,02%. Acum, asta e un filtru! Dacă într-adevăr doriți să fiți impresionați, amintiți-vă că ambele filtre din figura 16-7 utilizează simplă precizie. Utilizând dublă precizie, aceste nivele de performanță pot fi extinse de un milion de ori.

Limita cea mai puternică a filtrului windowed-sinc este timpul de execuție; poate fi inacceptabil de lungă dacă sunt multe puncte în kernelul filtrului și se utilizează convoluția standard. Un algoritm de viteză mare pentru acest filtru (convoluție FFT) este prezentat în capitolul 18. Filtrele recursive (capitolul 19) oferă, de asemenea, o bună separare a frecvenței și reprezintă o alternativă rezonabilă la filtrul windowed-sinc.

Este windowed-sinc kernel-ul filtrului optim pentru separarea frecvențelor? Nu, nuclee de filtru rezultate din tehnici mai sofisticate pot fi mai bune. Dar aveți grijă! Înainte de a sari în acest câmp foarte matematic, trebuie să vă gândiți exact la ceea ce sperați să câștigați. Windowed-sinc va oferi orice nivel de performanță pe care ați putea avea nevoie. Metodele avansate de proiectare a filtrului pot oferi un kernel de filtru ușor mai scurt pentru un nivel dat de performanță. Aceasta, la rândul său, poate însemna o viteză de execuție ușor mai rapidă. Fii avertizat că puteți obține un profit redus pentru efortul depus.