This shows you the differences between two versions of the page.
ps:labs_python:09 [2023/12/12 21:46] ionut.gorgos |
ps:labs_python:09 [2023/12/13 09:00] (current) ionut.gorgos |
||
---|---|---|---|
Line 18: | Line 18: | ||
În general presupunem că secvența h(k) are un număr $M$ finit și, în general, mic de elemente. | În general presupunem că secvența h(k) are un număr $M$ finit și, în general, mic de elemente. | ||
- | /*<hidden>*/ In our context, these elements will usually be the //taps// of a filter, and the convolution operation will be used to filter an input sequence x(n), as we shall see in the following exercises. /*</hidden>*/ | ||
Rezolvați următoarele exerciții: | Rezolvați următoarele exerciții: | ||
Line 51: | Line 50: | ||
- Trunchiați secvența hk(n) 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 hk(n) cu o fereastră dreptunghiulară centrată în punctul maxim al funcției sinc. Plotați secvența. | - Trunchiați secvența hk(n) 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 hk(n) cu o fereastră dreptunghiulară centrată în punctul maxim al funcției sinc. Plotați secvența. | ||
- Aplicați DFT(//fft//) pe secvența trunchiată, adică cea înmulțită cu fereastra dreptunghiulară (care conține doar 1) și plotați spectrul (cu //plot//). 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 $F_s$, adică de la //0// la //1//. Vedeți diferențe față de filtrul ideal trece-jos? Acestea sunt efectele ferestrei dreptunghiulare. | - Aplicați DFT(//fft//) pe secvența trunchiată, adică cea înmulțită cu fereastra dreptunghiulară (care conține doar 1) și plotați spectrul (cu //plot//). 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 $F_s$, adică de la //0// la //1//. Vedeți diferențe față de filtrul ideal trece-jos? Acestea sunt efectele ferestrei dreptunghiulare. | ||
- | - Folosiți aceeași secvență trunchiată (hk(n)), dar înmulțiți-o cu o fereastră precum //Blackman// (//blackman// în Python). Efectuați din nou DFT și plotați spectrul (cu //plot//). Arată mai bine?. | + | - Folosiți aceeași secvență trunchiată (hk(n)), dar înmulțiți-o cu o fereastră precum //Blackman// (//np.blackman// în Python). Efectuați din nou DFT și plotați spectrul (cu //plot//). Arată mai bine?. |
- În final, folosiți ca intrare sinusoida din Exercițiul 1 ca x(n) și filtrați-o printr-o convoluție cu secvența obținută mai sus după folosirea ferestrei Blackman(folosiți funcția //np.convolve// din NumPy sau //signal.convolve// din //scipy.signal//). Plotați intrarea și ieșirea în aceeași figură folosind //stem// pentru a observa efectele filtrului. | - În final, folosiți ca intrare sinusoida din Exercițiul 1 ca x(n) și filtrați-o printr-o convoluție cu secvența obținută mai sus după folosirea ferestrei Blackman(folosiți funcția //np.convolve// din NumPy sau //signal.convolve// din //scipy.signal//). Plotați intrarea și ieșirea în aceeași figură folosind //stem// pentru a observa efectele filtrului. | ||
Line 83: | Line 82: | ||
, unde b_low sunt coeficienții $b_i$ ai unui filtru FIR trece-jos. | , unde b_low sunt coeficienții $b_i$ ai unui filtru FIR trece-jos. | ||
- | === Exercițiul 4 -- Proiectarea de FIR rapidă folosind MATLAB [<color red>BONUS</color>] === | + | === Exercițiul 4 -- Proiectarea rapidă de filtre FIR/IIR folosind MATLAB === |
- | În acest exercițiu, încercăm să urmăm pașii de la exercițiul 3, dar în MATLAB. | + | [<color red>BONUS</color>] |
+ | |||
+ | În acest exercițiu, încercăm să urmăm pașii de la exercițiul 3, dar în **MATLAB**. Pentru a accesa MATLAB, puteți folosi MATLAB instalat pe PC-urile din laborator sau să folosiți **MATLAB Online**, din browser. Pentru MATLAB Online, trebuie să vă creați un cont cu adresa de e-mail de la facultate pe site-ul [[https://www.mathworks.com/mwaccount/register|acesta]]. | ||
Î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. Apoi puteți folosi funcția //filter// pentru a filtra orice secvență folosind coeficienții $b_i$ dați de //fir1//, iar $a_0 = 1$. | Î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. Apoi puteți folosi funcția //filter// pentru a filtra orice secvență folosind coeficienții $b_i$ dați de //fir1//, iar $a_0 = 1$. |