20.4 Stabilitate

Limitarea principală a filtrelor digitale efectuate prin convoluție este timpul de execuție. Este posibil să se obțină aproape orice răspuns al filtrului, cu condiția să fiți dispus să așteptați rezultatul. Filtrele recursive sunt exact opusul. Ele rulează ca fulgerul; dar, sunt limitate în performanță. De exemplu, considerați un filtru low-pass cu 6 poli, ripplu 0,5%, cu o frecvență cutoff de 0,01. Coeficienții de recurență pentru acest filtru pot fi obținuți din Tabelul 20-1:

Priviți cu atenție la acești coeficienți. Coeficienții "b" au o valoare absolută de aproximativ zece. Folosind o simplă precizie, zgomotul de rotunjire pe fiecare dintre aceste numere este de aproximativ o milionime din valoare, adică 10-6. Acum, priviţi la coeficienții "a", cu o valoare de aproximativ 10-9. Ceva este în mod evident greșit aici. Contribuția din semnalul de intrare (prin coeficienții "a") va fi de 1000 de ori mai mică decât zgomotul din semnalul de ieșire calculat anterior (prin coeficienții "b"). Acest filtru nu va funcționa! Pe scurt, zgomotul de rotunjire limitează numărul de poli care pot fi utilizați într-un filtru. Numărul efectiv va depinde ușor de ripplu și dacă acesta este un filtru high- sau low-pass. Numerele aproximative pentru simplă precizie sunt:

Tabelul 20-3 Numărul maxim de poli pentru simplă precizie.

Performanța filtrului va începe să se degradeze pe măsură ce se apropie de această limită; răspunsul la treaptă va arăta mai multă depășire (overshoot), atenuarea stopband va fi slabă, iar răspunsul în frecvență va avea un ripplu excesiv. Dacă filtrul este împins prea departe sau există o eroare în coeficienți, ieșirea probabil va oscila până la apariția unui prisos.

Există două moduri de extindere a numărului maxim de poli care poate fi utilizat. În primul rând, folosiți dubla precizie. Acest lucru necesită utilizarea de dublă precizie și în calculul coeficientului (inclusiv valoarea pentru pi).

A doua metodă este de a implementa filtrul în etaje. De exemplu, un filtru cu șase poli începe ca o cascadă de trei etaje de câte doi poli fiecare. Programul din Tabelul 20-4 combină cele trei etaje într-un singur set de coeficienți de recurenţă pentru o programare mai ușoară. Totuşi, filtrul este mai stabil dacă se efectuează ca cele trei etaje inițiale separate. Aceasta necesită cunoașterea coeficienților "a" și "b" pentru fiecare dintre etaje. Aceştia pot fi obținuţi din programul din Tabelul 20-4. Subrutina din Tabelul 20-5 este apelată o dată pentru fiecare etaj din cascadă. De exemplu, este apelată de trei ori pentru un filtru cu șase poli. La finalizarea subrutinei, cinci variabile sunt returnate în programul principal: A0, A1, A2, B1 și B2. Aceștia sunt coeficienții de recurență pentru etajul cu doi poli pe care se lucrează, şi pot fi utilizați pentru a implementa filtrul în etaje.

Tabelul 20-4 și 20-5 Program pentru calcularea coeficienților a și b
pentru filtrele recursive Chebyshev.

În liniile 270-300, patru parametri sunt introduși în program. Frecvența cutoff FC este exprimată ca o fracție din frecvența de eșantionare, și deci trebuie să fie în gama: 0 la 0,5. Variabila LH este setată la unu pentru un filtru high-pass și zero pentru un filtru low-pass. Valoarea introdusă pentru PR trebuie să fie în gama 0 la 29, corespunzând la un ripplu 0 la 29 în răspunsul în frecvență. Numărul de poli din filtru, introdus în variabila NP, trebuie să fie un întreg par între 2 și 20. La completarea programului, coeficienții a și b sunt stocați în matricile A[ ] și B[ ] (a0 = A[0], a1 =A[1], etc.).

Tabelul 20-5 este o subrutină apelată de la linia 340 a programului principal. Șase variabile sunt trecute la această subrutină, și cinci variabile sunt returnate.

Tabelul 20-6 conține două seturi de date pentru a ajuta depanarea acestei subrutine. Funcțiile COS și SIN utilizează radiani, nu grade. Funcția LOG este logaritm natural (baza e). Declararea tuturor variabilelor în virgulă mobilă (inclusiv valoarea lui pi) de a fi cu dublă precizie va permite să se utilizeze mai mulți poli.

Tabelele 20-1 și 20-2 au fost generate cu acest program și pot fi utilizate pentru a testa operații adecvate. Cap. 33 descrie operarea matematică a acestui program.

Tabelul 20-6 Depanarea datelor.
Acest tabel conține două seturi de date pentru depanarea subrutinei listate în Tabelul 20-5.