keskiviikko 1. huhtikuuta 2009
R9 / Paperi #5 kommentteja
Tehtävä 1. Suotimen vaatimusmäärittely (speksit) kirjoitetaan rajataajuuksien ja värähtely/vaimenemisominaisuuksien suhteen. Tehtäväannosta piirretään seuraavat visuaaliset määrittelyt.
Mallivastauksissa speksit ja toteutunut |H(z)| on piiretty kuvaajiin. Jos |H(z)| käppyrä menee speksien väliin, niin ok. Jos ei, niin jotain on tehtävä, jotta speksit täyttyy: muokattava rajataajuutta, värähtelyspeksejä tai lisättävä astelukua, mikä vaikuttaa suotimen jyrkkyyteen ja värähtelymääriin.
Havaitaan, että (a) 4. asteen elliptinen täyttää annetut speksit, (b) 10. asteen Cheb II täyttää, mutta on liiankin tiukka etenkin estokaistalla, (c) rajataajuuden suhteen ei täytä speksejä.
Liian tiukka suodin == turhan suuri asteluku vaatimuksiin suhteutettuna, turhaa laskentaa, turhia muuttujia, turhaa prosessorin ja ilmakehän lämpenemistä jne...
VK2-pistelaskarit tehtävä 2: kerroin K skaalaa suotimen magnitudivasteen maksimin ykköseksi. Skaalauksilla ei merkitystä symbolisessa, ideaalissa laskennassa, mutta on merkitystä, jos esitystarkkuus on rajattu.
Tiedetään siis, että 8. asteen kaistanpäästösuotimen maksimi on kohdassa omega = pi/2. Koska z = e^jw, niin z= e^(j pi/2) = j, ja maksimiarvo voidaan "helposti" laskea.
Tässä tuli sattumoisin esimerkki äärellisestä laskentatarkkuudesta. Tehtäväpaperissa oli neljä desimaalia, laskin tiistaina taululla katkaisulla yhteen ja keskiviikkona pyöristyksellä yhteen desimaaliin. Katkaisulla pääsin tilanteeseen, jossa jakaja oli nolla, pyöristyksellä maksimiarvoksi tuli 7, kun se oikeasti lienee 17,.. tai jotain. Tässä nyt erityisesti vaikutti se, että nimittäjä on pieni luku, joten laskenta on herkkää.
K (gain) voi ajatella olevan "voimakkuuden säädin". Suotimien sarjaankytkennässä sisäinen laskenta skaalataan sopivaksi, jotta laskentatarkkuus olisi järkevää.
Voi ajatella myös signaalin näytteistyksessä, esim. puheen taltioinnissa. Jos puhutaan mikkiin hiljaa tai kaukaa, niin signaali saa koko dynaamisen skaalan -1..+1 sijasta arvoja vaikkapa välillä -0.01..+0.01. Nyt jos lyödään K=100, niin päästään takaisin tuohon skaalaan -1..+1, mutta myös kvantisointikohina on yhtä lailla vahvistunut!
Kotistereoissa nupit kaakossa lienee suurin piirtein 0 dB ja sitten hiljaisimmillaan kuiskaustasolla noin -70 dB. Mites se menikään: puhe 60 dB, suihkukone 130 dB tai jotain... - sama suhde, lieneekö oikealla hehtaarilla?
Tehtävä 2. Digitaalisen IIR-suotimen suunnittelu bilineaarimenetelmällä. Teoreettinen tehtävä: Matlabissa tehtäisiin kahdella komennolla IIR-suodin. Voisi ajatella neljä vaihetta:
(I) speksit kohdasta 2b
(II) prewarppaus kohdasta 2c (s-taso -> z-taso)
(III) analoginen suodin H(s) kohdasta 2a
(IV) bilineaarimuunnos 2c (z-taso -> s-taso)
(I) digispeksit, nyt tiedetään vain, että rajataajuudella 100 Hz vaimennus -3 dB
(II) taajuuden esikorjaus tarvitaan kompensoimaan bilineaarimuunnoksen (kohta IV) taajuusvääristymä. Digimaailmassa nähdään taajuudet 0 .. fT/2, tässä 0 .. 500 Hz. Jatkuvassa maailmassa taasen nähdään taajuudet 0 .. oo Hz. Eli vääristymä eestaas tulee, kun kohta 500 Hz mäpätään äärettömäksi taajuudeksi. Kohta Omega_pc s-tasossa vastaa taajuutta 104 Hz (ravistettu hihasta tulkkaamalla vakio k = 2f_T).
Vakiosta k ei tarvitse tietää mitään, koska se tulee automaagisesti katoamaan kohdan IV sijoituksessa.
(III) Nyt siis meillä on _Butterworth_-tyyppinen 1. asteen stabiili H(s)-suodin. Siitä tullaan saamaan kohdassa (IV) 1. asteen stabiili H(z)-suodin. Muistetaan, että stabiililla analogiasuotimilla navat vasemmassa puolitasossa, kun taas stabiiliilla digisuotimella navat yks.ympyrän sisällä.
(IV) Bilineaarimuunnos sijoituksilla s = ... ja Omega_pc = ...
Tehtävä 3. Digitaalisen FIR-suotimen suunnittelu. Erilaisia vaihtoehtoja. Matlabin komentoja fir1, fir2, firls, firpm.
Katsotaan tässä ikkunamenetelmä (fir1).
Ikkunafunktioita käytetään erityisesti spektriestimoinnissa katkaisemaan signaali x pieniin paloihin. Siksi termit Hamming, Hann, Blackman voivat ponnahtaa esiin.
Pääperiaatetta voi demota myös kurssin www-sivuilta löytyvällä Matlab-ohjelmalla demoFIRwindow.m
Lasketaan siis ideaalinen, äärettömän pitkä h_d[n], ikkunoidaan se w[n]:llä:
h_FIR[n] = h_d[n] . w[n]
Kuten ylläolevasta kuvasta kävi ilmi, kaikkia vaiheita voi tutkia niin aika- kuin taajuustasossa.
keskiviikko 25. maaliskuuta 2009
R8 Matlab #4 laskarien kommentteja
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ä 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
* 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
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.















































