keskiviikko 25. maaliskuuta 2009

R8 Matlab #4 laskarien kommentteja

Kurssin alkupuolella suotimen analysointia. Nyt vastakkainen operaatio eli määrittelyistä lasketaan suotimen H(z) kertoimet.

HUOM! Tehtävien 2 ja 3 koodipohja on saatavilla kurssin kotisivulta, kuten myös muutamat muut apufunktiot speksit.m, speksitFIR.m, tf2latex.m.

[10-15 min] Tehtävässä 1 käydään läpi suodinvaatimusten määrittelyä Matlabia varten. Tässä erityisesti IIR-suotimien määrittelyt: päästökaistalla maksimivaihtelu Rp (dB), estokaistalla minimivaimennus Rs (dB), päästökaistan rajataajuus Wp (skaalattuna, näytteenottotaajuuden puolikas vastaa ykköstä, joten aina 0 < Wp < 1) ja estokaistan rajataajuus Ws.



Syötetään arvot Matlabiin. speksit.m on kurssin oma funktio.





[15-20 min] Tehtävässä 2 käydään esimerkki IIR-suotimen suunnittelusta. Digitaalisen IIR-suotimen suunnittelussa käytetään hyväksi analogisen IIR-suotimen H(s) suunnittelualgoritmeja (Butterworth, ...), jotka bilineaarimuunnoksella muutetaan digitaaliksi H(z).

Ladataan synteettinen signaalin M4002.wav, joka koostuu 100 Hz, 300 Hz, 500 Hz, 700 H, ..., kosinikomponenteista.

Tehtävänannossa sivulla 2 ("Task") annetaan suotimen vaatimukset: Rp, Rs, Wp, Ws, ja lisäksi, että halutaan elliptinen IIR-suodin (ellipord, ellip).



IIR-suotimien toteutus Matlabilla on kaksi riviä koodia: suotimen asteluvun arviointi (-ord.m) ja itse suotimen kertoimien laskeminen.

LUE esim. "help ellipord" JA "help ellip", jotta tiedät, mitä arvoja annetaan funktiolle ja mitä se palauttaa!!!



Täältä pitäisi tulla siis nätti 3. asteen alipäästösuodin. Piirretään suotimen magnitudivaste samaan kuvaajaan vaatimusten kera ja todetaan, että vaatimukset toteutuvat ("meet specfications"). Suodatuksen jälkeen voi katsoa tulosta signaalin spektrogrammista.

[15-20 min] Tehtävässä 3 tehdään FIR-suodin Parks-McClellan-algoritmilla (firpmord, firpm).





Jos tulee huomanneeksi, että speksit eivät täyty tarkalleen, lue "help ellipord" :n lopusta "CAUTION 1":



Saadaan sitten lineaarivaiheisen suotimen nätit kuvaajat asteluvulla 40 (alkuperäinen) tai 42 (korjattu).

Kokeile muuttaa päästö- ja estokaistan väliä pienemmäksi. Miten asteluvulle käy?

1 kommentti:

  1. Usein siis funktiopari Xord ja X (demossa 2 ellipord ja ellip sekä demossa 3 firpmord ja firpm) tuottaa suotimen H(z)=B(z)/A(z) kerroinvektorit B ja A. Ylläolevassa esimerkissä 2 ellipord palauttaa toisen muuttujan Wn, mutta ellip käyttää Wp:tä neljäntenä. help:in mukaan molemmissa pitäisi olla Wp. Itse yleensä kirjoitan molempiin Wn, koska buttord ja cheb1ord käyttävät normeerattua rajataajuutta Wn.

    VastaaPoista