This is an old revision of the document!
Laboratorul 10.
Filtre FIR trece bandă și trece-sus, filtre IIR
Pentru acest exercițiu 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_{ideal}$) 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:
Generați filtrul în timp $h_{ideal}$ precum în laboratorul 9, ex.2 (creați filtrul în frecvență, treceți în domeniul timp, înmulțiți cu o fereastră precum Blackman sau alta)
Înmulțiți $h_{ideal}$ element cu element cu secvența $\cos(\frac{2\pi f_B n}{f_s})$, unde $f_B$ este frecvența din centrul benzii dorite, iar $f_s$ este frecvența de eșantionare.
Câteva cazuri particulare:
$f_B = \frac{f_s}{4}$, în acest caz secvența cosinus devine [0, -1, 0, 1, 0, -1, 0, …]. Acesta este un tip de filtru eficient trece-bandă centrat în frecvența $f_s / 4$.
$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:
Generați o secvență de filtru ideal trece-jos $H_{ideal}$ având N = 256 elemente, reprezentând spectrul de frecvență al unui filtru trece-jos. Folosiți o frecvență de cut-off de fs/16. Adică totul înainte de fs/16 trebuie să treacă, pe când totul mai sus trebuie sa fie oprit (folosiți un dreptunghi care se oprește la fs/16). Observați că trebuie să generați un spectru simetric pentru a obține o secvență reală la următorul pas.
Acum aplicați inversa DFT(în practică inversa FFT) pentru a obține secvența corespunzătoare în domeniul timp $h_{ideal}$.
Trunchiați secvența $h_{ideal}$ prin selectarea a doar L=65 de eșantioane din centru(32 din stânga maximului funcției sinc, maximul funcției, și 32 de eșantioane din dreapta). Aceasta corespunde multiplicării secvenței $h_{ideal}$ cu o fereastră rectangulară centrată în punctul maxim al funcției sinc. Plotați secvența.
Aplicați DFT($fft$) pe secvența trunchiată înmulțită cu fereastra rectangulară (care conține doar 1) și plotați spectrul. Rețineți: este important aici, precum și la primul plot pentru filtru trece-jos ideal, să notăm axa frecvențelor (axa x) ca o funcție de Fs, adică de la 0 la 1.
Folosiți aceeași secvență trunchiată ca mai sus, dar înmulțiți-o cu o fereastră precum $Blackman$. Aplicați din nou $fft$ și plotați spectrul.
Din această secvență puteți obține o secvență corespunzătoare unui filtru trece-bandă cu $f_B = \frac{f_s}{4}$.
Obțineți o secvență corespunzătoare unui filtru trece-sus cu $f_B = \frac{f_s}{2}$.
Generați trei sinusoide cu frecvențe diferite (ex: $0.1 \cdot f_s$, $0.25 \cdot f_s$, $0.4 \cdot f_s$, unde $f_s = 64000$ și $N = 64$) și filtrați-le (folosind funcția *numpy.convolve*) 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 *numpy.stem* pentru a observa efectele filtrelor.