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?

tiistai 17. maaliskuuta 2009

Kommentteja R7-laskarit

Tehtävä 1, apumuuttuja, takaisinkytkennässä oltava mukana viivettä. [10 min]

Tehtävä 2, apumuuttujan käyttö, diffis -> z-muunnos, muunnosavaruudessa helppo päästä eroon apumuuttujista; kanoninen rakenne; allpass/kokopäästösuodin [20 min] /kuva 1/



Vk2-pistelaskarit. 1, apumuuttuja, napa ja nolla samassa kohdassa johtaa sievenemiseen. [25 min] /kuva 2/





Tehtävä 3, suora muoto I ja II. [10 min] /kuva 3/






H(z):n suhteen ekvivalentti transpoosirakenne: vaiheet (1)-(5):



Vk2-pistelaskarit. 5, DF I, I_t, II, II_t [20 min]

Malliratkaisuista puuttuu allpass-suotimen taustat, ominaisuudet ja tunnistaminen. Löytyvät kokoelman aiemmasta tehtävästä [P59]. Miksi erilaisia rakenteita? Kts. kappale äärellinen sananpituus (finite wordlength). Miksi lohko/virtauskaavioita? Transponointi ei aivan eksaktisti; voi käyttää mihin tahansa rakenteeseen jotta saadaan toinen ekvivalentti suodin.

Luento 16.3., suodinrakenteet

OSAAMISTAVOITTEET

* apumuuttujien avulla minkä tahansa suotimen piirroskaaviosta siirtofunktio
* suora muoto -rakenteet
* ekvivalentti rakenne transponoimalla

AIKATAULU

9.15 - 9.35 kurssin jälkipuoliskon esittely mitran kirjan luvuittain

9.35 - 10.30 luku 8, MA-30 FIR- ja IIR-toteutuksina (matlab-korjaus luennon lopussa), apumuuttujien käyttö (summaimen jälkeen), suora muoto I ja II

10.45 - 11.35 suora muoto II transponoituna, matlabin filter-komento, kursorisesti polyphase, linear-phase ja tilayhtälöesitykset, sinigeneraattori (apumuuttujien käyttö)

KUVAT

Matlabkin erehtyy... Kaikki on siis numeroesitystarkkuudesta kiinni.



MA-30-suodin FIR- ja IIR-toteutuksina suora muoto I:



Suora muoto II:



Matlabilla toteutettuna: sama lopputulos, kunhan oikea alustus.



Transponoitu versio:



Matlabin filter-komento on sisäisesti esitetty suora muoto II_transpoosi -muodossa. Jos suodatus tehdään pienissä paloissa, suotimen rekisterit pitää alustaa edellisestä palasta jääneillä jäännösarvoilla.





Välihuomautus: Miksikö suotimen navat ja nollat ovat aina kompleksikonjugaattipareina? Näin saadaan reaaliarvoisia suotimen kertoimia, ts., reaaliset kertoimet h[n] tai polynomin H(z) kertoimet tuottavat navat ja nollat kompleksikonjugaattipareina.



Sinigeneraattori, apumuuttujien käyttö.

sunnuntai 8. maaliskuuta 2009

Kommentteja R6

Tehtävä 1: FIR-suodin. Tehtävä 2: IIR-suodin. Tehtävä 3: napanollakuvaaja.

Kuvia tehtävään 1 [P42]. Huomaa kaavat liittyen esim napanollakuvaajaan H = (A B C) / (D E F), josta |H| = |(A B C)| / |(D E F)| = (|A| |B| |C|) / (|D| |E| |F|), ja vastaavasti kulma <H = <A + <B + <C - <D - <E - <F.

Napanollakuvio ja magnitudivaste: pingotettu joustava kangas, jossa nollakohdissa isketään naula alustaan ja napakohdissa laitetaan kankaan alle (äärettömän) korkea piikki nostamaan kangasta. Yksikköympyrän kehältä lasketaan |H(e^jw)|:n arvo.

LTI-ominaisuudet: stabiilisuus (mikrofoni liian lähellä kaiutinta - kiertäminen), kausaalisuus (ei ennusta, reaaliaikainen). Näille selvät kriteerit h[n]:n avulla. Esimerkki kausaalisuudesta: ma-2 jossa keskiarvoistetaan päivittäisiä lämpötiloja: y[n] = 0.5 x[n] + 0.5 x[n-1], eli tämän ja eilisen keskiarvo on tämän päivän keskiarvoistettu. Nyt ei-kausaalinen vaihtoehto y[n] = 0.5 x[n+1] + 0.5 x[n], jossa huomisen ja tämän päivän keskiarvo on päivän keskiarvoistettu. Huomaa, että nyt h[n] = 0.5 d[n+1] + 0.5 d[n] eli h[n] != 0 kun n<0.

perjantai 6. maaliskuuta 2009

Ennen välikokeita

Tiistain, keskiviikon ja torstain vastaanottoihin osallistui noin 40-50 opiskelijaa (osa useampaan kertaan).

Tiistaina ja keskiviikkona käytiin läpi mm. f(x) = x^2008 + 1 ja sitä vastaava DSP-notaatiolla H(z) = 1 + z^-2008. Lineaarivaiheisuutta (FIR) laskettiin läpi ottamalla symmetriakohdan yhteinen tekijä. Keskiviikkona näytteistettiin kosineja ja pyöriteltiin h[n]=0.8^(n) mu[n] + 0.8^(n-1) mu[n-1]:stä diffisyhtälö.

Torstaina Antti ja Jukka kiersivät vastaamassa henkilökohtaisesti eikä mitään demottu taululle.

Välikoepistelaskareita teki reilu 100 opiskelijaa, mikä on reilusti vähemmän kuin viime vuonna. Ovatko sisäänotot pudonneet niin rajusti? Ilmeisesti. Nyt tosiaan viimeisin vastaanottotilaisuus meni kahdella assarilla ihan aidosti henkilökohtaisen konsultaation tasolla!

Katsotaan mitä esseestä tulee. Etenkin niiden arviointi voi olla varsin mielenkiintoista. Essee lienee ollut kompastuskivi myös pistelaskareissa, joissa suhteellinen keskiarvo putosi rajusti viime vuosiin verrattuna. Liikaa tehtävää? Ei motivoivaa?

tiistai 3. maaliskuuta 2009

Kommentteja R5

Tämän kierroksen joitakin koodeja löytyy Laskarit-sivulta.

Tehtävässä 1 käytetään konvoluutiota kahteen eri tarkoitukseen. Ensin etsitään tiettyä sekvenssijonoa (vrt. tutka tai kaikuluotain), jolloin puhutaan "sovitetusta suotimesta" ("matched filter"). Kun tehtävän yksi valmis koodi ajetaan, saadaan poimittua x:stä reunat. 2D-signaaleilla puhutaan "maskisuodatuksesta".



Toinen esimerkki signaalin syntetisointi, tässä tapauksessa kaikuefektin luominen. Impulssivastejono h[n] on nyt "kaiku". Huuda rappukäytävässä "AH" ja kuuntele miten kaiku vastaa "AH ah ah ah" pienellä viiveellä (tässä 0.2 sekuntia) ja vaimentuen. Nyt pitäisi luoda siis tuo lukujono h[n] ja miettiä, mikä tuo lukuarvo N on. Hmm... kun äänisignaanin kiisseli.wav näytteenottotaajuus on 22050 Hz, niin siinä on yhden sekunnin aikana 22050 numeroarvoa. Siten 0.2 sekuntiin pitää löytyä nollia yhteensä ...

Tehtävän voi suoraan ajatella konvoluution määritelmästä: