Laboratorul 11.

Filtre FIR trece bandă și trece-sus, filtre IIR

În acest laborator ne vom îmbunătății cunoștințele despre filtrele FIR, experimentând cu filtre trece bandă și trece-sus și vom învăța despre implementarea filtrelor IIR(filtre cu răspuns infinit la impuls), care pot fi mult mai eficiente decât filtrele FIR (ca și număr de operații de înmulțire pentru performanță similară).

Materiale utile:

  • Vedeți slide-urile din R. Lyons aici

Exercițiul 1 -- Filtre FIR trece bandă și trece-sus [4p]

Similar cu al doilea exercițiu din laboratorul 9, vom utiliza metoda proiectării cu fereastră pentru a crea filtre FIR trece-bandă și trece-sus. Precum am văzut la curs, putem folosi același principiu pentru a crea filtre trece-jos, trece-bandă sau trece-sus. Tot ce trebuie să facem este să înmulțim coeficienții filtrelor (adică secvența h(k)) cu valorile unei sinusoide de o anumită frecvență (centrul frecvențelor pentru filtrul trece-bandă).

Pentru a crea un filtru trece-bandă cu frecvența centrală $f_B$ ar trebui să procedați în felul următor:

  1. Generați filtrul în timp h(k) precum în laboratorul 9 (creați filtrul în frecvență, treceți în domeniul timp, înmulțiti cu o fereastră precum Blackman sau alta)
  2. Înmulțiți h(k) element cu element cu secvența $\cos(\frac{2\pi f_B n}{f_s})$, unde $f_s$ este frecvența de eșantionare.

Câteva cazuri particulare:

  1. $f_B = \frac{f_s}{4}$, în acest caz secvența cosinus devine [1, -0, -1, 0, 1, 0, -1, 0, …]. Acesta este un tip de filtru eficient trece-bandă centrat în frecvența $f_s / 4$.
  2. $f_B = \frac{f_s}{2}$, în acest caz secvența cosinus devine [1, -1, 1, -1, …] și obținem un filtru trece-sus.

Acum că știți toate acestea (sperăm că ați reținut și de la curs), aveți de făcut următoarele:

  1. Generați filtrul trece-jos hk(n) cu L = 65 eșantioane precum în laboratorul 9.
  2. Din această secvență obțineți o secvență corespunzătoare unui filtru trece-bandă cu $f_B = \frac{f_s}{4}$.
  3. Obțineți o secvență corespunzătoare unui filtru trece-sus cu $f_B = \frac{f_s}{2}$.
  4. Generați trei sinusoide cu frecvențe diferite (ex: $0.1 f_s$, $0.25 f_s$, $0.4 f_s$ și filtrați-le (folosind funcția conv) cu filtrele trece-sus și trece-bandă obținute mai sus. Plotați atât input-ul cât și output-ul în același plot folosind stem pentru a observa efectele filtrelor.

Exercițiul 2 -- Proiectarea de FIR rapidă folosind MATLAB [2p]

Precum am văzut la curs, putem descrie un filtru (sistem liniar) cu feedback(IIR având termenii $a_i$ mai jos) sau fără feedback (FIR) folosind o ecuație cu diferențe precum: $y(n) = b_0 x(n) + b_1 x(n-1) + \ldots + b_q x(n-q) + a_1 y(n-1) + \ldots + a_p y(n-p)$

Putem reprezenta întârzierile x(n-1) ca $z^{-1} x(n)$, unde $z=e^{j2\pi}$. Apoi, obținem o ecuație care depinde doar de x(n) și y(n) și obținem funcția de transfer a filtrului $H(z) = \frac{y(n)}{x(n)}$ precum: $H(z) = \frac{\sum_{k=0}^q b_q z^{-q}}{1 - \sum_{k=0}^p a_p z^{-p}}$

În MATLAB, puteți folosi funcția fir1 pentru a obține rapid elementele $b_i$ ale unui filtru FIR trece-jos, trece-bandă sau trece-sus(ignorați ceoficienții $a_i$ deocamdată). Apoi puteți folosi funcția filter pentru a filtra orice secvență folosind coeficienții $a_i$ dați de fir1.

Pentru acest exercițiu, folosiți funcția fir1 pentru a proiecta filtre FIR trece-jos, trece-bandă și trece-sus. Apoi folosiți funcția filter pentru a testa filtrele cu aceleași secvențe ca în exercițiul precedent. Puteți verifica designul filtrelor folosind tool-ul fvtool.

Exercițiul 3 -- Proiectarea de IIR rapidă folosind MATLAB [2p]

Acum să proiectăm un filtru IIR folosind funcția din MATLAB butter. Aceasta funcție ne va returna atât coeficienții $a_i$ cât și $b_i$. Precum în exerecițiul precedent, procedați în felul următor:

  1. Proiectați un filtru trece-jos folosind butter
  2. Verificați filtrul folosind fvtool
  3. Folosiți filtrul pentru a filtra secvențele de la exercițiul anterior cu funcția filter
  4. Comparați performanța filtrelor IIR și FIR utilizând:
    1. număr similar de coeficienți
    2. performanță similară (scăderea în dB a frecvențelor în afara benzii de trecere)

Exercițiul 4 --- Proiectarea de filtre FIR si IIR folosind fdatool din MATLAB [2p]

Folosiți tool-ul MATLAB fdatool pentru a proiecta și analiza rapid performanțele filtrelor FIR și IIR:

  1. Generați un filtru FIR trece-jos folosind o fereastră Kaiser, având Fs = 48000 Hz, Fc = 10000 Hz, cu N=10 coeficienți(ordin)
  2. Generați un filtru IIR trece-jos (Butterworth sau Chebyshev type I) cu aceeași parametri.
  3. Comparați amplitudinea răspunsului
  4. Încercați sa creați un filtru FIR cu un răspuns similar cu al unui filtru IIR, prin creșterea numărului de coeficienți.

După proiectarea filtrelor precum ați dorit, le puteți salva (File→Generate MATLAB Code) și să le folosiți direct în alte scripturi MATLAB pentru a filtra diverse semnale.

  • Data publicării: 10.12.2018
ps/laboratoare/11.txt · Last modified: 2018/12/08 21:16 by ionut.gorgos
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0