keskiviikko 26. syyskuuta 2012

Näytteenottotaajuuden muuntelu

Tänään luennoilla käsiteltiin alku kappaleesta "näytteenottotaajuuden muuntelu". Kappale tarkastelee menetelmiä, joilla voidaan muuntaa näytteenottotaajuus näytteistämisen jälkeen toiseksi. Perusoperaatiot ovat desimointi ja interpolointi, jotka toimivat kokonaislukukertoimilla. Näitä yhdistelemällä saadaan kaikki rationaalikertoimet. Molemmat operaatiot tarvitsevat alipäästösuodattimen, joka on yleensä FIR, ja suunnitellaan normaaleilla menetelmillä. Suotimen siirtymäkaistasta todettiin, että se laitetaan aina rajataajuuden alapuolelle. Näin signaaliin tulee vähemmän virhettä kuin jos laskostumista pääsisi tapahtumaan.

Desimoinnissa tapahtuva näytteenottotaajuuden pieneminen toteutetaan yksinkertaisesti jättämällä näytteitä pois tasaisin väliajoin. Esimerkiksi kertoimella kolme jätetään vain joka kolmas näyte jäljelle. Tämä kuitenkin aiheuttaa laskostumista, koska signaalin sisältämät taajuudet pysyvät samoina mutta näytteenottotaajuus pienenee. Tämä saadaan luonnollisesti estettyä suodattamalla signaali ennen alinäytteistämistä sopivalla alipäästösuotimella.

Desimoinnilla todettiin olevan suora yhteys esim. peleissä käytettäviin antialias-suotimiin. Tällöinkin kyse on samasta ongelmasta kuin audiosignaalin näytteistämisessä: kuinka äärettömän tarkasta vektoriesityksestä (esim. objekti "pallo", jonka keskipiste on (100,100) ja säde r=10) päästään äärelliseen resoluutioon (esim. 1024 x 768 resoluutioinen näyttö) ilman rosoisia reunoja ja muita laskostumisilmiöitä. Suoraan näytteistämällä kuvaan tulee laskostumisefekti, ja parempi tulos saadaankin poistamalla liian korkeat taajuudet ennen näytteistystä. Ongelmana on kuitenkin, ettei digitaalisille objekteille ole "analogista" suodinta. Tämän vuoksi kuva usein renderöidäänkin väliresoluutiolle (esim. 2x tai 4x lopullinen resoluutio) ja annetaan kuvan laskostua. Laskostunut kuva voidaan kuitenkin desimoida edelleen lopulliselle taajuudelle antialias-suotimen kera, jolloin laskostumiset tulevat vain korkeammalla väliresoluutiolla, eivätkä toivottavasti haittaa yhtä paljon.

Interpolointi puolestaan koostuu nollien lisäämisestä sekä tämän operaation tuottamien roskien poistamisesta. Nollien lisääminenhän tuottaa kopioita ja peilikuvia alkuperäisestä spektristä, jotka voidaan myös poistaa kätevästi alipäästösuodatuksella.

Kappaleessa luodaan myös katsaus interpoloinnin ja desimoinnin yhdistämiseen, jolloin päästään yksinkertaisempaan rakenteeseen huomaamalla kokonaisuudessa olevan kaksi suodatinta peräkkäin, jotka molemmat poistavat tietyn kaistan ylätaajuuksilta. Näin ollen vain toinen niistä on tarpeellinen. Piirtämällä kuva näiden suodinten amplitudivasteista voidaan päätellä kumpi on tarpeeton (aina se, jota vastaava muunnoskerroin on isompi).

Luennon loppupuolella vilkaistiin lyhyesti D/A-muunnoksen toteutusta. Tarkasteltavana oli kaksi ratkaisua, joista kappaleen ensimmäinen on vanhempi, ja oli käytössä esim. ensimmäisissä CD-soittimissa (etupaneelissa saattoi olla teksti 4 times oversampling tms.). Tällöin D/A-muunnos tehdään ns. nollannen asteen pitopiirillä, joka tuo signaaliin häiriöitä korkeille taajuuksille. Nämä voidaan poistaa analogisella alipäästösuotimella, mutta ongelmaksi tulee kapea siirtymäkaista (20kHz - 22,05 kHz). Analogiapuolta voidaan yksinkertaistaa siirtämällä osa toiminnallisuudesta digitaaliseksi, eli interpoloimalla signaali digitaalisesti ennen D/A-muunnosta.

keskiviikko 19. syyskuuta 2012


Tämän päivän luennon aiheena oli signaalin taajuusjakauman laskenta mahdollisimman tarkasti. Tarkkuutta tarvitaan eritoten signaalianalyysissä, jossa taajuussisällön perusteella tehdään johtopäätöksiä esimerkiksi potilaan taudin laadusta. Jakauman laskenta eli spektrin estimointi onnistuu toki normaalilla diskreetillä Fourier-muunnoksella, mutta ei tuota täysin oikeaa tulosta, jos signaalin taajuuskomponenttien jaksot eivät ole samat kuin tarkasteluikkunan pituus. Prujussa on esimerkki tilanteesta, jossa signaalin taajuus osuu juuri kahden muunnoskomponentin väliin, jolloin energia jakautuu lähellä oleville taajuuskomponenteille.

Ongelmaan on kaksi ratkaisua. Tehospektriä voidaan estimoida joko autokorrelaation kautta tai suoraan FFT:llä. Molemmat ovat likimääräisiä menetelmiä: edellinen katkaisee autokorrelaatiofunktion ja jälkimmäinen itse signaalin. Sovelluksesta sitten riippuu kumpi on haitallisempaa. Yleisesti ottaen autokorrelaatiomenetelmä on parempi satunnaisille signaaleille (esim. soinniton äänne 's' tai 'f') ja FFT deterministisille signaaleille (soinnillinen äänne: 'a', 'e'). Prujussa keskitytään FFT:n ongelmien kanssa painimiseen.

FFT:n ongelmia voidaan lähestyä kahdesta suunnasta: ensimmäinen ratkaisu on käyttää pidempää ikkunaa, jolloin kaytettävissä olevien taajuuskomponenttien määräkin kasvaa. Joissain tilanteissa pituutta ei kuitenkaan voida määrättömästi kasvattaa esim. seuraavista syistä:
  • Mittaus on hidasta tai kallista. Esimerkiksi laitoksen systeemibiologian ryhmä tarkastelee eri organismien geenien aktiivisuutta ns. microarraymenetelmällä. Vaikka mittausten hinta onkin laskenut rajusti viime vuosina, saattaa jokainen aikasarjan näyte maksaa edelleenkin tuhansia euroja. Tutkittaessa esimerkiksi eri geenien toiminnan jaksollisuutta solusyklin aikana täytyy jaksollisuuden eli taajuuksien analyysin toimia luotettavasti hyvinkin pienellä näytemäärällä.
  • Sovellus ei salli viivettä spektrin estimoinnissa, ja suuren näytemäärän kerääminen vie aikaa. Esimerkiksi moottorin tai työkoneen toiminnan optimaalisuuden tarkastelu saattaa vaatia jaksollisuuden tarkastelua vaikkapa käynnin tasaisuuden arvioinnissa. Jotta saatua tietoa voitaisiin käyttää tehokkaasti säädön apuna, täytyy viiveen olla melko lyhyt.
  • Laskenta-aika on rajallinen. Reaaliaikaisissa sovelluksissa, joissa laskentakapasiteettia ei voida lisätä rajatta, täytyy ottaa huomioon menetelmän laskennallinen kompleksisuus. Fourier-muunnoksen laskenta on kompleksisuudeltaan O(n2), eli pituuden tuplaus nostaa laskennan määrän nelinkertaiseksi. Vaikka käytettäisiinkin alempana mainittua nollien lisäystä, voidaan näistä aiheutuva pituuden lisäys optimoida osin pois laskennasta.
Spektriin saadaan lisää taajuuskomponentteja lisäämällä näytteitä keinotekoisesti. Pienimmät sivuvaikutukset saadaan kun lisätään signaalin loppuun nollia. Tämä auttaa esimerkiksi prujun kuvien mukaisesti löytämään voimakkaimman taajuuden, joka 16 pisteellä suoraan ei löytyisi.

Sivuvaikutuksena nollien lisäämisellä on spektriin ilmestyvät komponentit jota ei todellisuudessa ole. Luennolla todettiin, että yksittäisen taajuuden tapauksessa Fourier-muunnos näyttääkin ikkunan Fourier-muunnoksen siirrettynä oikeaan paikkaan. Käytettävät ikkunat ovat samoja kuin suodinsuunnittelun yhteydessäkin, ja niiden avulla voidaan poistaa spektrin sivukeiloja (lisää ikkunoita harrisin artikkelista). Sivukeilojen poistumisen sivuvaikutuksena pääkeila kuitenkin leviää, joten ikkunan valinta on aina kompromissi samalla lailla kuin suodinsuunnittelussakin. Ikkunoiden vertailun helpottamiseksi niille voidaan laskea kuvaavia tunnuslukuja, joita on taulukoitu prujussa.

Varsinaisen prujun asian lisäksi demottiin oskilloskooppia, jossa on myös spektriestimointi-toiminto. Havaittiin, että käytetyssä mallissa on mahdollista valita joko suorakulmainen ikkuna tai Hanning-ikkuna.

keskiviikko 12. syyskuuta 2012


Äärellinen sananpituus


 Tämän päivän luennolla käsiteltiin (uuden monisteen version) kappale 1, jossa tarkastellaan äärellisen sananpituuden vaikutuksia. Meidän tarkastelussamme nämä ilmenevät A/D-muunnoksen yhteydessä sekä suodatettaessa äärellisellä laskentatarkkuudella. Pääpaino on ensimmäisessä tyypissä. Luennolla käsiteltiin näytteistyksessä käytettävät kvantisointitasot: esimerkiksi (1+7) bitin esityksessä käytettävissä ovat seuraavat 256 tasoa: -128/128, -127/128, ..., 0, ..., 126/128, 127/128. 


Pyöristettäessä lähimpään lukuun syntyvä kvantisointivirhe on aina välillä -1/256...1/256. Yleisesti pyöristys (1+b) bittiin aiheuttaa enintään virheen 2^(-b) / 2 suuntaan tai toiseen. Vasemmalla olevassa kuvassa on esimerkkitapaus jossa "seiska" kvantisoidaan 1+9 bittiin. Alimmassa olevasta virhesignaalista nähdään että kaikki pyöristysvirheet tietyllä välillä vaikuttavat yhtä todennäköisiltä. 

Alempana olevassa kuvassa on lisäksi piirretty virhesignaalin taajuusjakauma sekä lukuarvojen jakauma. Molemmat jakaumat näyttävät tasaisilta.

Seuraavaksi tätä yksinkertaista virhemallia käytettiin johdettaessa arvio virheen varianssille, joka on suoraan verrannollinen syntyvän kvantisointivirheen tehoon. Tätä kautta määritellään SNR, eli signaali-kohinasuhde, eli häiriöetäisyys. Tämä suure kertoo jotain äänenlaadusta, ja saatavia tuloksia tullaan tarvitsemaan kappaleessa 6, kun päätellään montako bittiä signaalista uskalletaan poistaa kompressiossa ilman äänenlaadun havaittavaa heikkenemistä.

Jos ehtojen oletetaan olevan voimassa, voidaan osoittaa kohinan odotusarvon olevan nolla ja varianssin yhtä kuin 2^(-2b) / 12.

Yllä olevaa kaavaa voidaan edelleen jalostaa signaali-kohinasuhteen käsitteeksi (SNR), joka kertoo signaalin tehon suhteessa kohinan tehoon. Kun kaavaa pyöriteltiin, havaittiin jokaisen ylimääräisen bitin (per näyte) nostavan SNR:ää kuudella bitillä.

Lopuksi johdettiin kaava varianssille suodatuksen jälkeen ja sekä tutkittiin suotimen kertoimien pyöristämisen vaikutusta. Tämähän täytyy tehdä aina kun suodin toteutetaan huonomman tarkkuuden alustalla kuin Matlab (esim. tällä 17-bitin DSP:llä).

Luennon lopuksi kuulin että POP:issa olevat harkkaryhmät eivät ole samat kuin kurssin kotisivulla. Tarkoitus oli luoda torstaille kolme ryhmää ajalle 10-16, mutta ne ovatkin POP:issa ajalla 12-18. Torstaina 13.9 pyritään pitämään kaikki 4 ryhmää ajalla 10-18.

keskiviikko 5. syyskuuta 2012


Ensimmäisen luennon aluksi esiteltiin kurssin sisältö, läpäisyvaatimukset ym. normaalin käytännön mukaiset asiat, muisteltiin FIR- ja IIR-suodatuksen perusteita sekä tutkittiin Matlabin valmiita IIR-suodattimen suunnittelumenetelmiä.

Tässä yhteydessä tarkasteltiin ns. pole-zero-placement -suunnittelumenetelmää, jossa hiirellä sijoiteltiin napoja ja nollia yksikköympyrälle ja laskettiin näitä vastaava suodin. Alla olevassa kuvassa on eräs näin saatu napanollakuvio, jossa tavoitellaan alipäästösuodinta. Tätä vastaava amplitudivaste on seuraavassa kuvassa, jossa selvästi erottuu hyppäys ylös- tai alaspäin jokaisen lähellä kehää olevan navan tai nollan kohdalla. Alimmassa kuvassa on vielä esitetty siirtofunktion itseisarvo |H(z)|, josta saadaan keskimmäinen amplitudivasteen |H(exp(iw))| kuvaaja sijoittamalla exp(iw) lausekkeessa z:n tilalle.


Edellä kuvattu menetelmä ei luonnollisestikaan ole kovin tarkka. Toisen tunnin aihe olikin täsmällisempi IIR-suodinten suunnittelu, joka käytiin melko yleisellä Matlab-komentojen osaamisen tasolla. Kappaleen ydin on koottu monisteen taulukkoon, jossa suodintyyppejä vertaillaan amplitudivasteen ominaisuuksien ja kertoimien määrän suhteen. Kertoimia tarvitaan eri menetelmillä 29+28, 13+12 ja 8+7 kappaletta. Suurin määrä tulee Butterworth-suotimella ja pienin elliptisellä suotimella. Kahden Chebyshev-suotimen kerroinmäärä on näiden kahden ääripään välissä. Vertailun vuoksi FIR-suotimen kertoimien määrä vastaavilla vaatimuksilla olisi N = [5.5/0.035] = 159 käytettäessä Blackman-ikkunaa.

Muita luennolla esiin tulleita seikkoja olivat mm.

  • Matlabin kerroinvektorit a ja b eivät ole suoraan käytettävissä ulostulon y(n) laskennassa, vaan takaisinkytkentäkertoimien (siis esim. termin y(n-1) kertoimen) merkki täytyy vaihtaa vastakkaiseksi.
  • Elliptisellä suotimella on aina vähemmän kertoimia kuin muilla. Lisäksi tasavärähtely-ominaisuus on yleensä hyvä asia.
IIR-suotimen etuna on siis pienempi kertoimien tarve. Haittapuolina mahdollinen epästabiilisuus sekä numeeriset ongelmat toteutuksessa. Tästä esimerkkinä mainittiin kurssin SGN-1600 signaaliprosessorityö, jossa täytyy toteuttaa IIR-suodin. Käytännössä yli toisen asteen IIR-suodinta ei voi toteuttaa numeeristen ongelmien vuoksi. Sen sijaan suodin täytyy jakaa peräkkäisiin toisen asteen lohkoihin esim. Matlabin TF2SOS-funktiolla.

Luennon jälkeen kysyttiin voisiko monisteen PDF-version suojausta purkaa. Alunperin tiedosto suojattiin ettei siitä voisi suoraan kopioida pätkiä esim. opinnäytetöihin, mutta suojaus estää myös muistiinpanojen tekemisen suoraan PDF:ään. Suojauksen voi purkaa salasanalla "kkj56edsafU".
Kurssiblogi luotu. Blogin tarkoituksena on kirjata ylös kunkin luennon tärkeimmät asiat sekä tallentaa luennolla esillä olleita linkkejä ja kuvia opiskelijoiden saataville.