10.4. Proiectarea filtrelor FIR

Spre deosebire de filtrele IIR, a căror ieșire depinde atât de intrările cât și de ieșirile sale, ieșirea unui filtru FIR depinde doar de intrările sale. Deoarece ieșirea curentă este independentă de ieșirile din trecut, răspunsul său la impuls este de lungime finită. Ieșirea unui filtru general FIR este dată de

y[i] = b0 x[i] + b1 x[i-1] + b2 x[i-2] + ........ + bN x[i-N] [4]

unde N este ordinul filtrului și b0, b1, .... bN, sunt coeficienții săi. Filtrele FIR au anumite avantaje în comparație cu filtrele IIR.

• Pot realiza un răspuns de fază liniar și, prin urmare, pot transmite un semnal fără distorsiuni de fază.

• Sunt întotdeauna stabile. În timpul proiectării sau dezvoltării filtrelor, nu trebuie să vă faceți griji cu privire la stabilitate.

• Filtrele FIR sunt mai simple și mai ușor de implementat.

Aplicații ale filtrelor FIR

Multe aplicații necesită ca filtrele să fie cu fază liniară. În acest caz, ar trebui să utilizați filtrele FIR. Dar, filtrele FIR trebuie, în general, să aibă un ordin mai mare decât filtrele IIR, pentru a obține aceleași caracteristici de răspuns de magnitudine. Deci, dacă faza liniară nu este necesară, dar viteza este o considerație importantă, puteți folosi filtrele IIR în schimb.

În aplicațiile în care un semnal trebuie reconstruit după ce a fost împărțit în mai multe benzi de frecvență, este important ca filtrul să fie cu fază liniară. În procesul de reconstrucție, pierderea de fază poate face ca semnalul reconstruit să fie destul de diferit de cel original. Un exemplu de astfel de aplicație este în setul de instrumente Wavelet and Filter Banks Design, unde reconstruiți semnalul original (fie o formă de undă 1D sau o imagine 2D) din coeficienții wavelet. Filtrele folosite sunt filtre FIR. Aplicațiile se găsesc în domenii în care informațiile privind fazele sunt importante, cum ar fi eliminarea zgomotului, comprimarea datelor etc.

Classical FIR Design și Arbitrary FIR Design

Folosind DFD Toolkit, puteți proiecta filtre FIR în panoul Classical FIR Design (prezentat mai jos), care este foarte similar cu panoul Classical IIR Design pe care l-ați văzut.

Panoul include o interfață grafică cu graficul Magnitude vs. Frequency și cursoarele din partea stângă și o interfață bazată pe text cu controale digitale în partea dreaptă. Diferențele sunt absența controlului design în caseta de introducere a textului și adăugarea controlului minimize filter order sub caseta de introducere a textului.

Acest buton controlează dacă aplicația DFD minimizează ordinul filtrului estimat. Dacă acest buton este OFF, aplicația DFD utilizează o formulă rapidă pentru a estima ordinul filtrului pentru a satisface sau depăși specificațiile filtrului dorit. Dacă acest buton este ON, aplicația DFD ajustează iterativ ordinul filtrului până când găsește ordinul minim care respectă sau depășește specificațiile filtrului.

Filtrele FIR care sunt proiectate utilizează algoritmul de proiectare filtru FIR equiripple Parks-McClellan și includ tipurile lowpass, highpass, bandpass și bandstop. Algoritmul Parks-McClellan minimizează diferența dintre răspunsul dorit și cel real al filtrului pe întreaga gamă de frecvențe.

De asemenea, puteți proiecta filtre FIR cu un răspuns de frecvență arbitrar prin selectarea Arbitrary FIR Design din meniul principal.

"Arbitrary" înseamnă că puteți specifica exact ce mărime a răspunsului filtrului ar trebui să fie la anumite frecvențe. În exercițiul următor, veți proiecta un filtru FIR prin specificarea unui răspuns de frecvență arbitrar.

Exercițiul 10-2

Obiectiv: Proiectarea unui filtru FIR care filtrează datele în funcție de ponderea-A.

Detectarea umană de auz răspunde diferit la frecvențe diferite și nu percepe sunetul în mod egal. Anumite filtre sunt folosite pentru filtrarea sunetului aplicat la intrare, astfel încât acestea să imite răspunsul auditiv uman la semnalele audio. O aplicație în acest sens se află în analizoarele de terță- octavă, unde, pentru a imita răspunsul urechii umane, ieșirea analizorului este ponderată în conformitate cu tabelul prezentat mai jos:

Acest tip de ponderare este cunoscut sub numele de ponderare-A.

1. Lansați DFD Toolkit.

2. Selectați Arbitrary FIR Design din meniul principal. Veți accesa următorul panou de proiect:

Panoul include o interfață grafică cu graficul Magnitude vs.Frequency din partea stângă și o interfață bazată pe text cu controale numerice pe partea dreaptă. În șirul de pe partea dreaptă, puteți introduce sau modifica punctele de răspuns în mărime (frecvență și magnitudine). Din aceste puncte, aplicația DFD formează un răspuns de magnitudine dorit care acoperă întreaga gamă de frecvențe de la 0,0 la jumătate din rata de eșantionare. Aplicația DFD ia apoi acest răspuns dorit, împreună cu ordinul filtrului și utilizează algoritmul Parks-McClellan pentru a proiecta un filtru optim FIR echiripple (cu ripplu de aceeași înălțime).

Graficul de mai jos descrie răspunsul de magnitudine dorit și real al filtrului FIR proiectat.

Figura 10-1. Răspunsul dorit și real de amplitudine

Axa y este în unități liniare sau decibeli, depinzând de cum setați butonul din colțul sus-stânga al graficului. Axa x este în Hz. Scala maximă variază de la 0,0 la Nyquist (rata de eșantionare/2).

Butonul dB controlează unitățile de afișare (liniar sau decibel) ale tuturor controalelor și afișajelor pentru magnitudine. Aceste controale și afișaje includ graficul Magnitude vs. Frequency (axa y) și magnitudinile din șirul de puncte magnitudine-frecvență.

Următoarea matrice reprezintă matricea punctelor magnitudine-frecvență pe care aplicația DFD o folosește pentru a construi răspunsul de magnitudine al filtrului dorit. Aplicația DFD formează răspunsul filtrului dorit prin interpolarea între aceste puncte.

Frecvența fiecărui punct este în Hertz, iar magnitudinea este în unități liniare sau decibel de câștig, în funcție de setarea butonului din colțul din stânga sus al graficului Arbitrary Magnitude Response.

Puteți selecta puncte în acest matrice făcând clic în cercul din dreapta fiecărui punct. Apoi, puteți șterge punctele selectate făcând clic pe butonul delete sau le mutați făcând clic pe diamantul de direcție dorit din colțul din dreapta jos al graficului Arbitrary Magnitude Response.

Controlul # points specifică numărul total de puncte magnitudine-frecvență pe care aplicația DFD le folosește pentru a crea răspunsul de magnitudine al filtrului dorit.

Reducând acest număr se elimină punctele de la sfârșitul șirului magnitudine-frecvență, în timp ce crescând acest număr, se introduce număr suplimentar de puncte la dreapta punctului selectat.

Dacă doriți să selectați mai mult de un punct de magnitudine -frecvență pe graficul de răspuns, trebuie să setați butonul multiple selection ON.

Dacă faceți clic pe un punct pe care deja l-ați selectat, acesta va fi eliminat din lista de selecție.

Controlul interpolation selectează tipul de interpolare utilizat de aplicația DFD pentru a genera răspunsul dorit din șirul punctelor mărime-frecvență.

Alegeți interpolare lineară pentru a crea filtre "plate" (lowpass, highpass, bandpass și bandstop). Alegeți interpolare spline pentru a crea filtre care variază-lin.

Pentru a insera un punct magnitudine-frecvență între punctul selectat și punctul următor, faceți clic pe butonul ins.
Dacă punctul selectat este ultimul punct al șirului frecvență-magnitudine, aplicația DFD introduce noul punct între ultimele două puncte ale șirului.
Aplicația DFD introduce noi puncte la jumătatea drumului de-a lungul liniei care leagă cele două puncte exterioare.

Pentru a șterge punctele magnitudine-frecvență selectate, faceți clic pe butonul del. Aplicația DFD șterge toate punctele selectate.

Aceste puncte sunt punctele selectate magnitudine-frecvență. Puteți selecta puncte pe graficul Arbitrary Magnitude Response făcând clic pe punct sau direct din șirul frecvență-magnitudine afișată în partea dreaptă făcând clic pe cercul din dreapta fiecărui punct.

Controlul filter order specifică numărul total de coeficienți din filtrul digital FIR.

Indicatorul ripple afișează cea mai mare eroare absolută (liniară) dintre răspunsurile filtrului dorit și cel real.

Fereastra message afișează erorile care au apărut în timpul procedurii de proiectare FIR.

Caseta cu frecvențe blocate vă permite să blocați valorile frecvenței actuale ale punctelor magnitudine-frecvență. Dacă faceți clic în această casetă, puteți modifica numai magnitudinea sau valoarea-y a punctelor magnitudine-frecvență

Caseta uniform spacing este utilizată pentru a spația valorile de frecvență ale punctelor magnitudine-frecvență. Dacă faceți clic în această casetă, aplicația DFD spațiază punctele magnitudine-frecvență uniform de la 0,0 la rata de eșantionare/2, inclusiv.

Dacă faceți clic în caseta sort by frequency, aplicația DFD va sorta punctele magnitudine-frecvență atât în ​​graficul răspuns cât și în șir, în funcție de frecvența ascendentă. Valoarea fiecărui punct magnitudine-frecvență rămâne neschimbată; dar, ordinea punctelor se poate schimba.

Dând clic pe import from file, puteți să importați puncte magnitudine-frecvență dintr-un fișier text.

Controlul sampling rate specifică rata de eșantionare în eșantioane pe secundă (Hertz).

3. Specificațiile filtrului afișate în tabelul anterior au fost salvate în fișierul Dfd\Aweight.fir. Încărcați aceste specificații selectând DFD Menu » Load Spec ... și selectând fișierul Aweight.fir.

4. De asemenea, ați putut introduce aceste valori direct pe panoul frontal și apoi le-ați salvat selectând Save Specs ... din DFD Menu.

Când vi se solicită un nume de fișier, tastați Aweight.fir.

5. Cu controlul multiple selection setat la OFF, mutați câteva puncte pe graficul Arbitrary Magnitude Response. Pentru a face acest lucru, mutați cursorul aproape de un punct până când cursorul își schimbă forma, după cum se arată mai jos:

Țineți apăsat butonul stâng al mouse-ului și mutați punctul. Observați cum se schimbă răspunsul filtrului când punctul este mutat.

6. Alegeți locked frequencies și încercați să faceți același lucru ca în pasul anterior. Acum ar trebui să puteți schimba magnitudinea punctului selectat, dar nu și frecvența acestuia.

7. Modificați metodele de interpolare între interpolarea liniară și interpolarea spline. Observați diferența în forma răspunsului filtrului. Interpolarea liniară este folosită pentru a crea filtre "plate", cum ar fi filtre lowpass, highpass, bandpass și bandstop. Interpolarea spline este folosită pentru a crea filtre care variază-lin.

8. Închideți panoul Arbitrary FIR Design selectând Close din meniul File.

9. Închideți aplicația selectând Quit din meniul principal.

Sfârșitul exercițiului 10-2

10.5. Utilizarea Digital Filter Design Toolkit