16.2 Proiectarea filtrului

Pentru a proiecta un filtru windowed-sinc, trebuie selectați doi parametri: frecvența cutoff, fc, și lungimea nucleului filtrului, M.

Figura 16-3 Lungimea filtrului vs. roll-off-ul filtrului windowed-sinc.

Cum se arată în (a), pentru M = 20, 40 și 200, lățimile benzii de tranziție sunt BW = 0,2; 0,1; și 0,02 din rata de eșantionare, respectiv. Cum se arată în (b), forma răspunsului în frecvență nu se schimbă cu diferite frecvențe cutoff. În (b), M = 60.

Frecvența cutoff este exprimată ca o fracțiune din rata de eșantionare și, prin urmare, trebuie să fie între 0 și 0,5. Valoarea pentru M stabilește roll-off conform aproximației:

Ecuația 16-3 Lungimea filtrului vs. de roll-off.

Lungimea nucleului de filtru, M, determină lățimea benzii de tranziție, BW. Aceasta este numai o aproximație, deoarece roll-off depinde de fereastra utilizată.

unde BW este lățimea benzii de tranziție, măsurată de unde curba tocmai lasă unu, până unde ajunge aproape la zero (de exemplu, 99% la 1% din curbă). Lățimea benzii de tranziție este, de asemenea, exprimată ca o fracțiune din frecvența de eșantionare și trebuie să fie între 0 și 0,5. Figura 16-3a prezintă un exemplu de utilizare a acestei aproximări. Cele trei curbe arătate sunt generate din kerneluri de filtru cu: M = 20, 40 și 200. Din Ec. 16-3, lățimile benzii de tranziție sunt: BW = 0,2; 0,1 și, respectiv, 0,02. Figura (b) arată că forma răspunsului în frecvență nu depinde de frecvența cutoff selectată.

Deoarece timpul necesar unei convoluții este proporțional cu lungimea semnalelor, Ec. 16-3 exprimă un compromis între timpul de calcul (valoarea lui M) și ascuțimea filtrului (valoarea lui BW). De exemplu, roll-off cu 20% mai lentă a ferestrei Blackman (comparativ cu Hamming) poate fi compensată prin utilizarea unui kernel de filtru cu 20% mai lung. Cu alte cuvinte, se poate spune că fereastra Blackman este cu 20% mai lentă pentru a executa decât un roll-off echivalent al ferestrei Hamming. Acest lucru este important deoarece viteza de execuție a filtrelor windowed-sinc este deja extrem de lentă.

După cum se arată și în figura 16-3b, frecvența cutoff a filtrului windowed-sinc este măsurată la punctul jumătate din amplitudine. De ce folosiți 0,5 în loc de standardul 0,707 (-3dB) utilizat în electronica analogică și în alte filtre digitale? Acest lucru se datorează faptului că răspunsul în frecvență al windowed-sinc este simetric între banda de trecere și banda de oprire. De exemplu, fereastra Hamming are ca rezultat un ripplu de bandă de trecere de 0,2% și o atenuare identică a benzii de oprire (adică, ripplu în banda de oprire) de 0,2%. Alte filtre nu prezintă această simetrie și, prin urmare, nu au niciun avantaj în utilizarea punctului de jumătate de amplitudine pentru a marca frecvența cutoff. Așa cum se arată mai târziu în acest capitol, această simetrie face windowed-sinc ideal pentru inversiunea spectrală.

După ce fc și M au fost selectate, kernelul de filtrare se calculează din relația:

Ecuația 16-4 Nucleul filtrului windowed-sinc.

Frecvența cutoff fc este exprimată ca o fracție a ratei de eșantionare, o valoare între 0 și 0,5. Lungimea nucleului de filtru este determinată de M, care trebuie să fie un întreg par. Numărul eșantionului i este un întreg care rulează de la 0 la M, rezultând M+1 puncte în nucleul filtrului. Constanta K este aleasă pentru a realiza câștigul unitate la frecvența zero. Pentru a evita o eroare de împărțire-la-zero, pentru i = M/2, utilizați h[i] = 2πfcK.

Nu fi intimidat de această ecuație! Pe baza discuției anterioare, ar trebui să puteți identifica trei componente: funcția sinc, deplasarea M/2 și fereastra Blackman. Pentru ca filtrul să aibă câștig unitate la DC, constanta K trebuie aleasă astfel încât suma tuturor eșantioanelor să fie egală cu unu. În practică, ignorați K în timpul calculului kernelului de filtrare și apoi normalizați toate eșantioanele după cum este necesar. Programul listat în Tabelul 16-1 arată cum se face acest lucru. De asemenea, observați cum este efectuat calculul la centrul sinc, i = M/2, care implică o divizare la zero.

Această ecuație poate fi lungă, dar este ușor de folosit; pur și simplu tastați-o în programul computerului și uitați de ea. Lăsați calculatorul să se ocupe de calcule. Dacă găsiți că încercați să evaluați manual această ecuație, faceți ceva foarte foarte greșit.

Să fim specifici în cazul în care kernelul de filtrare descris de Ec. 16-4 este localizat în matricea computerului. De exemplu, M va fi ales să fie 100. Amintiți-vă că M trebuie să fie un număr par. Primul punct al kernelului de filtrare este în poziția 0 a matricii, în timp ce ultimul punct este în poziția 100 a matricii. Aceasta înseamnă că întregul semnal este lung de 101 puncte. Centrul de simetrie este la punctul 50, adică M/2. Cele 50 de puncte din stânga punctului 50 sunt simetrice cu cele 50 de puncte din dreapta. Punctul 0 este aceeași valoare ca și punctul 100, iar punctul 49 este același cu punctul 51. Dacă trebuie să aveți un anumit număr de eșantioane în kernelul de filtrare, cum ar fi utilizarea FFT, pur și simplu adăugați zerouri la un capăt sau la altul . De exemplu, cu M = 100, ați putea face probele 101 până la 127 egale cu zero, rezultând un nucleu filtru de 128 de puncte lungime.

Figura 16-4 Exemplu de nuclee de filtru și răspunsurile la treaptă corespunzătoare.
Frecvența oscilației sinusoidale este aproximativ egală cu frecvența cutoff fc în timp ce M determină lungimea nucleului.

Figura 16-4 prezintă exemple de kerneluri de filtru windowed-sinc și răspunsurile lor la treaptă corespunzătoare. Eșantioanele de la începutul și sfârșitul nucleelor filtrului sunt atât de mici încât nu pot fi văzute în grafice. Nu faceți greșeala de a crede ca sunt neimportante! Aceste eșantioane pot fi mici în valoare; totuși, colectiv, ele au un efect mare asupra performanței filtrului. De aceea, reprezentarea în virgulă mobilă este utilizată tipic pentru a implementa filtre windowed-sinc. Intregii nu au, de obicei, un interval dinamic suficient pentru a capta variația mare a valorilor conținute în kernelul de filtrare. Cum face filtrul windowed-sinc performanță în domeniul timp? Teribil! Răspunsul la treaptă are depășire (overshoot) și oscilații (ringing); acesta nu este un filtru pentru semnale cu informații codificate în domeniul timp.

Secțiunea următoare: Exemple de filtre Windowed-Sinc