keskiviikko 1. huhtikuuta 2009

R9 / Paperi #5 kommentteja

Tällä kertaa 1,5 tuntia vierähti suodinsuunnittelun merkeissä. Otetaan alkuun perustilanne, jossa x -- h -- y. Otetaan vaikkapa äänisignaali x ja piirretään siitä spektri. Puhe- tai musiikkiäänessä yleensä suurin osa energiasta on matalilla taajuuksilla. Jos havaitaan korkeataajuista häiriötä, halutaan suunnitella LTI-suodin, joka on alipäästösuodin sellaisella rajataajuudella, että häiriö vaimentuu pois (ylempi kuva). Jos valitsemme rajataajuuden väärin (vrt demotehtävän kuva 1c), niin häiriö ei suodatukaan oikein (alempi kuva).



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.

Ei kommentteja:

Lähetä kommentti