perjantai 3. huhtikuuta 2009

Välikokeet tarkastettu

Välikokeetkin on nyt tarkastettu, mutta julkaisen ne vasta maanantaina. Tämä siksi, että pitää kirjoittaa Exceliin VB-skripti, joka kopioi harjoitusbonukset harjoituspistetietokannasta välikokeiden tulostiedostoon.

Ennakkotietona kerrottakoon, että kaikkiaan 70 osallistui toiseen välikokeeseen, ja noin joka kolmas (n. 25 hlöä) saa viitosen. Kaiken kaikkiaan välikokeilla suorittaneiden arvosanat olivat siis selvästi parempia kuin tentillä suorittaneiden.

tiistai 31. maaliskuuta 2009

Tentit tarkastettu

Tentit on nyt tarkastettu ja tulokset verkossa. Välikokeesta valmiina on tehtävät 1,2 ja 5.

Tenttitehtävistä 2 ja 4 olivat varsin helppoja, ja 1 ja 3 tavanomaisia. Itse asiassa 2:ssa oli jopa samoja tehtäviä kuin ensimmäisessä välikokeessa, mikä saattoi vetää väkeä tekemään tenttiä välikokeen asemesta.

Viitostehtävän a-kohta osoittautui melko vaikeaksi, vaikka oikeitakin vastauksia tuli. Melko moni oli osannut laskea impulssivastetta h1(n) = delta(n-1) vastaavan taajuusvasteen, eli
H1(iw) = exp(-iw), jolla H2(iw) kerrotaan. Harvempi oli hoksannut, että H2 oli ideaalinen alipäästösuodin, jonka impulssivaste on liitteen taulukossa.

tiistai 24. maaliskuuta 2009

2. välikokeen tehtävät 1 ja 5 tarkastettu

Välikoe tarkastetaan ennen tenttiä. Tehtävät 1 ja 5 on nyt tarkastettu ja niiden keskimääräiset pistemäärät ovat 4,5 ja 4,1 pistettä. Tehtävän 5 b-kohdassa riitti kirjata ylös oikea kaava ja kuinka annetut arvot siihen sijoitetaan. Lopullista tulosta ei laskinongelman vuoksi vaadittu.

perjantai 20. maaliskuuta 2009

Laskimet tentissä 19.3

Tentin järjestelyissä 19.3 oli väärinkäsitys tenttijärjestelyissä, eikä ohjelmoitavia laskimia sallittu lainkaan. Tarkoitus oli, että ohjelmoitavia laskimiakin saa olla kunhan muisti on tyhjä.

Tehtäviä tutkiessani arvioin että välikokeen 5b oli ainoa, jossa laskin oli välttämätön. Laskinongelma otetaan tehtävää tarkastaessa huomioon.

Yritän saada tiedekunnan hankkimaan esim. 500 identtistä peruslaskinta (joita ainoastaan saa käyttää), jotta tällaista ei enää pääsisi tapahtumaan.

keskiviikko 11. maaliskuuta 2009

Vierailuluennot

Tänään oli kaksi "vierailuluentoa". Ensimmäisellä tunnilla kerroin itse automaattisesta rekisterikilpien tunnistuksesta videokuvasta. Tätä tekee Tamperelainen yritys Visy Oy, jossa olin töissä 2003-2005 (ja edelleenkin sivutoimiluvalla). Rekisterikilpien tunnistus toimii kulunvalvonnan tunnisteena, jolloin kulkulupa suljetulle alueelle voidaan myöntää tietylle kilvelle. Erityisen hyödyllinen tämä on esimerkiksi satamissa, joissa vieraat käyvät usein vain kerran. Tällöin normaalit menetelmät, kuten autojen RFID-lukijat (esim. tämä valmistaja) ovat liian vaivalloisia hallinnoida. Sen sijaan rekisterikilpi toimii kuin sormenjälki: se on aina mukana.

Tarinan yhteydessä puhuin myös yleisemmin konenäöstä ja sen historiasta. Ensimmäinen optisen tekstintunnistuksen patentti on vuodelta 1929, ja nykyisin trendi on siirtää toiminnallisuutta laitteistoista entistä enemmän ohjelmiston suuntaan.

Osin sama sanoma oli myös toisella vierailijalla (Risto Rönkkä, NRC). Hän puhui tulostettavasta elektroniikasta ja ohjelmistojen merkityksestä sen tuotannossa. Esitys pohjautui kehitystyöhön, jota TTY:n elektroniikan laitoksella on tehty jo vuosien ajan. Erityisesti keskityttiin projektiin, jossa tavoitteena on korvata perinteinen piirilevy tulostamalla kytkennät johtavalla musteella. Etuna tässä lähestymistavassa on mm. se, että kokonaisuus saadaan pienempään kokoon ja tuotannosta tulee joustavampaa. Lisäksi prosessi on lisäävä (ja siten ympäristöystävällisempi), eli materiaalia ei missään vaiheessa poisteta, kuten perinteisessä tuotannossa.

Oma laitoksemme on tullut mukaan vajaat 2 vuotta sitten, kun havaittiin että muotitettujen komponenttien sijaintia ei saada täysin hallintaan. Ajatuksena onkin siis tuoda vuori Muhammedin luokse, eli sovittaa kaikki muu sen mukaan kuinka komponentit sattuvat lopulta asettumaan. Käytännössä jokaisesta modulista otetaan kuva ennen tulostusta, kuvasta tunnistetaan kytkentäpisteet automaattisesti, ja korjataan tulostuskuva modulin mukaiseksi.

Molemmat esitykset herättivät (melkein) spontaaneja kysymyksiä, mistä olin erittäin mielissäni. Loppukaneettina totesin lyhyesti, että jos lähdette opiskelemaan signaalinkäsittelyä, älkää unohtako opetella ohjelmoimaan. Signaalinkäsittely on ohjelmointia jossa saa käyttää matematiikkaa.

Kurssille järjestetään jatkokurssi SGN-1250 ensi kesänä juhannuksen jälkeen sekä ensi syksynä.

keskiviikko 4. maaliskuuta 2009

Kuvankäsittelyä ja pakkausta

Tunnin aluksi korostettiin viimeistä kertaa konvoluution ja Fourier-muunnoksen yhteyttä. Jos siis

y(n,m) = h(n,m) * x(n,m),

niin

Y(n,m) = H(n,m) X(n,m),

mistä vääristymätön kuva x on mahdollista ratkaista jakolaskulla jos h tiedetään. Lyhyen kertauksen jälkeen perehdyttiin kuvien piste-ehostukseen. Tähän alueeseen kuuluvat menetelmät käsittelevät kuvaa piste kerrallaan ajamalla kunkin harmaasävyarvon tietyn funktion läpi. Funktio määräytyy tilanteen mukaan, ja gamma-korjauksen tapauksessa se on muotoa

y = x^gamma

(sopivilla skaalauksilla varustettuna, jolloin väli [0,255] kuvautuu väliksi [0,255]). Histogrammin ekvalisoinnin tapauksessa funktio lasketaan kuvasta niin, että histogrammin massa jakautuu suunnilleen tasaisesti. Tämä saadaan aikaiseksi kaavalla 6.1.

Toisella tunnilla tutustuttiin kompression teoriaan, erityisesti kuvien tapauksessa. Kompressio lienee se signaalinkäsittelyn ala, joka on lähinnä jokapäiväistä elämää. Anekdoottina esitin aluksi muisikuvan, jonka mukaan ensimmäiset 1990-luvun alun jpeg-purkuohjelmat prosessoivat tyypillistä neljännesmegapikselin kuvaa useamman minuutin ennen kuin se oli GIF-formaatissa, jonka silloiset kuvankatseluohjelmat osasivat näyttää. Ilman laskentatehon eksponentiaalista kasvua digitaalinen media olisi kaukana siitä mitä se nyt on.

Häviöttömistä menetelmistä käytiin tarkemmin läpi Huffman-koodaus, joka perustuu koodipuun generointiin symbolien todennäköisyyksien mukaan. Harvinaisemmille symboleille annetaan pidempi koodisana, mikä mahdollistaa lyhyemmän koodisanan antamisen yleisemmille symboleille. Huffmanin pakkaustehokkuutta voidaan verrata entropiaan, joka antaa alaraja mille tahansa häviöttömälle pakkausmenetelmälle. Todettiin Huffmanin pääsevän melko lähelle alarajaa. Entropiarajaa voidaan pudottaa erilaisilla tempuilla, kuten tallentamalla ns. erotuskuva.

keskiviikko 25. helmikuuta 2009

Kappaleet 5 ja 6

Tämänpäiväisellä luennolla käsiteltiin suodinsuunnittelu loppuun sekä alkuosa kuvankäsittelystä.

Ensimmäisellä tunnilla kerrattiin ikkunoinnin tarvetta: ideaalisen suotimen pituus on ääretön, eikä sitä voi käytännössä toteuttaa. Näin ollen impulssivaste on katkaistava, mistä seuraa vääristymä amplitudivasteeseen. Tätä ei voi kompensoida esim. kertoimia lisäämällä, vaan on käytettävä ikkunaa joka pehmentää katkaisun vaikutusta. Ikkunoita on lueteltu esim. sivun 84 taulukossa, ja mitä paremmat vaimennusominaisuudet niillä on, sitä leveämpi siirtymakaistasta tulee. Onneksi tätä voidaan kuitenkin kompensoida kertoimia lisäämällä.

Tunnin lopuksi käytiin taululla esimerkki ikkunamenetelmän käytöstä vuoden 2007 maaliskuun tenttitehtävässä 4.

Toisella tunnilla käsiteltiin kuvankäsittelykappaletta 6. Alkuosa koostuu enimmäkseen yksiulotteisten lineaaristen järjestelmien yleistyksestä kahteen ulottuvuuteen. Fourier-muunnoksen yhteydessä todettiin, että kaksiulotteinen tapaus voidaan toteuttaa kahden yksiulotteisen FFT:n avulla, mikä mahdollistaa nopean laskennan.

Lopuksi tarkasteltiin dekonvoluutiota, eli konvoluution käänteistä operaatiota. Monisteen esimerkin lisäksi esimerkkinä mainittiin Hubble-avaruusteleskoopin varhainen ongelma, joka aiheutti kuvaan jonkin verran epätarkkuutta. Ennen kuin kiertoradalle päästiin korjaamaan linssi kuntoon, täytyi linssin virhe mallintaa konvoluution avulla. Varhaisia kuvia myös korjattiin dekonvoloimalla virheelliset kuvat. Linssi kuitenkin lopulta vaihdettiin, koska dekonvoluutio ei voi tuottaa yhtä täydellistä tulosta kuin fyysinen korjaus. Tämä johtuu siitä, että PSF ei koskaan ole täysin oikea, vaan siinä on numeerista epätarkkuutta. Lisäksi informaatiota saattaa kadota konvoluution yhteydessä, jos taajuustason funktiossa H(n,m) on nollia kertoimina.

keskiviikko 18. helmikuuta 2009

Suodinsuunnittelua

Tämänpäiväisen luennon alussa oli ilmoitusasia: kakkosharkkojen rastilistat ovat kahden harkkaryhmän kohdalta kateissa. Pisteitä puuttuu siis noin kahdeltakymmeneltä opiskelijalta. Odottelemme ensi viikkoon josko listat löytyisivät, ja jos ei löydy, niin kaikille listalla oleville tulee automaattisesti täydet viisi pistettä kakkosharkoista. Tämä ei siis ole vielä lupaus varmoista pisteistä, sillä listat saattavat vielä putkahtaa jostain esiin. Lisää aiheesta ensi viikon luentojen alussa.

Varsinaisen luennon aluksi käytiin vielä toistamiseen läpi edellisviikon Matlab-demo, jossa hiirellä voidaan sijoitella napoja ja nollia napa-nollakuvioon, ja Matlab laskee syntyneen suotimen taajuusvasteen. Uutena ominaisuutena oli testi, jossa Matlab samalla suodattaa Handel-testisignaalin kyseisellä suotimella ja näin paljastaa onko suodin stabiili. Havaittiin, että heti kun yksikin napa oli yksikköympyrän ulkopuolella, ulostulo muuttui järjettömäksi, ja näytearvot olivat suuruusluokkaa 10^50.

Kappaleessa 5 tarkastellaan kappaleen 4 ongelmaa toisin päin. Kappaleessa 4 tavoite oli selvittää annetun suotimen taajuusominaisuudet, ja kappaleessa 5 pitäisi ratkaista mikä suodin toteuttaa annetun taajuuskäyttäytymisen. Suunnittelukriteerit ovat kahtalaiset: suotimen taajuusvasteen määräämiseksi pitää tietää millainen vaihevaste halutaan ja millainen amplitudivaste halutaan.

Vaihevasteen osalta vaaditaan että kaikkien taajuuksien tulee viivästyä yhtä paljon. Tämä toteutuu jos vaihevaste on lineaarinen. Yksinkertaisimmissa tapauksissa vaihevasteen lauseke voi olla siis esimerkiksi muotoa -2w, joka taatusti on lineaarinen. Havaittiin kuitenkin, että vaihevasteessa tapaa olla 180 asteen hyppäyksiä, ja silti vaihevaste voi olla lineaarinen. Tällainen hyppäys tulee tilanteessa jossa taajuusvastefunktio menee kompleksitason origon läpi. Matlabissa tällainen kuvaaja saadaan esim. komennoilla:

>> [H,W] = freqz([1, 1, 1]);
>> plot(H);
>> grid on

Freqz-funktiosta saa siis ulos taajuusvastefunktion arvoja vektorissa H. Vektorissa on lueteltu taajuusvasteen kompleksiset lukuarvon 512:ssa pisteessä taajuusakselilla. Kun kuvaaja plotataan ruudulle, on tuloksessa yksi nollakohta, jossa kompleksifunktion vaihe hyppää 180 astetta (ts. funktio vaihtaa merkkiä). Näistä nollakohdista huolimatta suodin voi olla lineaarivaiheinen, ja näin ollen lineaarisuus kannattaakin määritellä näin: Suodin on lineaarinen, jos sen vaihevasteen derivaatta on vakio aina kun se on määritelty. Derivaatasta käyteään nimeä ryhmäviive, ja se ilmaisee suoraan eri taajuuksille tulevan viiveen näytteinä (miinusmerkkisenä). Lopuksi todettiin, että vaihevaste on aina lineaarinen, jos impulssivasteen termit ovat symmetrisesti keskipisteen suhteen.

Amplitudivaste täytyisi saada päästökaistalla ykköseksi ja estokaistalla nollaksi. Käytännössä tämä ei ole mahdollista, vaan suotimelle täytyy antaa hieman toleranssia ja sallia tietty määrä värähtelyä molemmilla kaistoilla. Lisäksi kaistojen väliin täytyy sallia "don't care" -alue, jossa amplitudivaste saa olla mitä vain.

Prujussa ratkaistaan mikä impulssivaste toteuttaisi ideaalisen amplitudivasteen (arvot vain nollaa tai ykköstä). Osoittautuu että impulssivasteen muoto on tuttu sinc-funktio, mutta sen pituus on ääretön. Tämän vuoksi suotimesta ei saataisi ainuttakaan vastearvoa koskaan, vaan laskentaa tarvittaisiin äärettömän paljon.

Tästä ongelmasta päästään katkaisemalla impulssivaste, mutta tämä luonnollisesti vaikuttaa amplitudivasteeseen. Todettiin, että suoralla katkaisulla ei estokaistan värähtelyä saada millään alle n. 21 desibelin, ja päästökaistallakin suurin heitto on luokkaa 0.7 dB. Ratkaisu tähän on käyttää ikkunointia, eli kertoa katkaistu impulssivaste jollain ikkunafunktiolla. Näin voidaan päästä parempiin vaimennusominaisuuksiin. Tämä kuitenkin kostautuu siirtymäkaistan levenemisenä: esim. Hamming-ikkunan siirtymäkaista on aina n. 3,5-kertainen suoraan katkaisuun verrattuna. Tämä voidaan kuitenkin kompensoida nostamalla kertoimien määrää.

maanantai 16. helmikuuta 2009

Pruju löytynyt

Kurssin pruju on löytynyt harkkaluokasta, ja omistaja saa sen tuntomerkkejä vastaan osoitteesta

kasperi.summanen@tut.fi

keskiviikko 11. helmikuuta 2009

Siirtofunktio

Tänään käsiteltiin kappaleen 2 loppuosa, ja pohdittiin siirtofunktion merkitystä suotimen analyysissä. Tämän ja viime viikon tavoite oli siis oppia analysoimaan annetun suotimen toiminta. Ensi viikolla käännetään ongelma toisin päin ja siirrytään suotimen synteesiin: kuinka suunnitellaan suotimen impulssivaste niin että se täyttää annetut taajuusvaatimukset.

Aluksi kerrattiin sivulla 60 olevan kaavan (4.3) suotimen analyysi. Ensin siitä selvitetään impulssivaste, sitten siirtofunktio ja lopuksi taajuusvaste. Taajuusvaste on kompleksifunktio, joten sitä ei voida sellaisenaan piirtää 2-ulotteiseen koordinaatistoon. Näin ollen piirretään kaksi kuvaajaa: funktion itseisarvon kuvaaja sekä sen vaihekulman kuvaaja. Näistä edellinen kertoo kuinka paljon eri taajuuksien amplitudit muuttuvat suodatuksessa ja jälkimmäinen paljonko ne viivästyvät suodatuksessa. Amplitudivaste on näistä mielenkiintoisempi, koska sen avulla taajuuksia saadaan esim. poistettua yksinkertaisesti huolehtimalla että amplitudivaste ko. taajuudella on nolla. Vaihevasteessakin on oma mielenkiintonsa, ja siihen tutustutaan lähemmin ensi viikolla.

Lineaarista asteikkoa kätevämpi on käyttää desibeliasteikkoa, joka on logaritminen. Logaritmi tekee kertolaskusta yhteenlaskua, ja korostaa lähellä nollaa olevia eroja, jotka molemmat ovat meille käteviä ominaisuuksia.

Seuraavaksi perehdyttiin suotimen siirtofunktion käytännön laskentaan kappaleessa 4.5.4. Tällä menetelmällä saadaan kätevästi sekä IIR-, että FIR-suotimen siirtofunktiot laskettua. Siirtofunktion navoista ja nollista voi päätellä yllättävän paljon suotimen stabiilisuudesta sekä amplitudivasteesta. Jokainen suotimen nolla ja napa nimittäin vaikuttaa suoraan taajuusvasteeseen sitä enemmän mitä lähellä ne ovat yksikköympyrän kehää. Tätä demottiin Matlab-skriptillä, jossa kompleksitasoon voitiin sijoitella napoja ja nollia hiirellä. Ohjelma laski syntyvän suotimen taajuusvasteen saman tien, mikä havainnollisti sijoiteltujen juurien merkitystä. Jos lataat yo. skriptin, niin vasen nappi lisää nolla(parin), oikea napa(parin), ja keskimmäinen nappi lopettaa.

Lopuksi käytiin läpi toukokuun 2008 tentin kolmostehtävä taululla. Myös kyseisen tentin 2a-tehtävä liittyy aiheeseen, samoin kuin esim. kurssin SGN-1250 viimeisimmän tentin 2a-kohta.

tiistai 10. helmikuuta 2009

Välikokeen kaikki tehtävät tarkastettu

Välikoe on nyt tarkastettu loppuun, ja tulokset tulevat nettiin viimeistään keskiviikkona. Nelostehtävässä täytyi laskea suotimen impulssivaste lähtien liikkeelle sen yhtälöstä

y(n) = 0.75 y(n-1) + x(n)

Tästä tehtävästä annettiin pääsääntöisesti joko 0p tai 3p, eli se joko osattiin tai sitten ei.

B-kohdassa täytyi laskea impulssivaste lähtien liikkeelle askelvasteesta. Tästäkin annettiin 0p tai 3p aivan paria tapausta lukuunottamatta, eli sekin joko osattiin tai sitten ei.

Täydet pisteet ekasta välikokeesta on kahdella. Yli 27 pistettä on 15:lla (ja 27 pistettä on tenteissä ollut viitosen raja). Tässä täytyy huomioida, että harkkabonuksia tulee useimmille vielä lisää.

keskiviikko 4. helmikuuta 2009

FFT ja Z-muunnos

Tänään luennolla käsiteltiin FFT:n loppu ja Z-muunnoksen alku sivulle 62 asti.

FFT:n yhteydessä mainittiin kurssin SGN-1600 harjoitus signaaliprosessorien käytöstä. Yhtenä osana sitä on DTMF-taajuuksien automaattinen tunnistus. Tehtävänannon menetelmä pohjautuu Fourier-muunnokseen, joskin se on toteutettu sineillä ja kosineilla. Samalla korostettiin muunnoksen tulkintaa korrelaation kautta: jokainen F-muunnoksen matriisin rivi laskee korrelaation eritaajuisen signaalin kanssa. Laajemmin ajateltuna tätä menetelmää voidaan käyttää tiedonsiirtoon; jokaisen bitin kohdalla nolla koodataan taajuudeksi x ja ykkönen taajuudeksi y. Wikipediasta löytyy lisätietoa tästä ns. FSK-koodauksesta, jolla päästään jopa huimaan 300 bitin sekuntinopeuteen.

FFT:stä käytiin läpi pelkästään monisteen kaavat (3.2) ja (3.3), sekä niiden toteutus sivulla 48.

Z-muunnos on diskreettiaikaisen Fourier-muunnoksen (DTFT; s. 38) yleistys, ja muuntaa signaalin kompleksifunktioksi. Määritelmissä on eroa vain summan sisällä olevassa lausekkeessa, joka Z-muunnoksen tapauksessa on z, ja DTFT:n tapauksessa exp(iw). Jos siis tiedetään signaalin Z-muunnos, saadaan DTFT yksinkertaisesti sijoittamalla z = exp(iw).

Erityisen mielenkiintoinen Z-muunnos on silloin kun muunnettavana on suotimen impulssivaste (joka on signaali siinä kuin mikä tahansa muukin). Tällöin muunnoksen tuloksesta käytetään nimeä siirtofunktio. Siirtofunktio on rationaalifunktio, jonka osoittajassa ja nimittäjässä on polynomi. Kun tämä lauseke tiedetään, saadaan Fourier-muunnos em. sijoituksella. Tulos H(exp(iw)) on nimeltään taajuusvaste, ja siihen menee sisään reaaliluku w (taajuus josta ollaan kiinnostuneita), ja ulos tulee kompleksiluku. Tämän kompleksiluvun itseisarvo kertoo kuinka suuri vahvistus suotimella on kyseisellä taajuudella.

Kaiken kaikkiaan asia oli tänään varsin matemaattista. Jos tämä ahdistaa sinua, niin ensi viikolla helpottaa.

tiistai 3. helmikuuta 2009

4 tehtävää tarkastettu

Neljä tehtävää on nyt tarkastettu, ja keskiarvot tehtävistä 1, 2, 3, ja 5 ovat 3,7, 3,4, 3,9 ja 4,6. Viidellä yhä täydet pisteet ja yli sadalla vähintään 3 pistettä per tehtävä (30 pistettä on kahden välikokeen yhteispisteiden läpipääsyraja). Hyvinhän nämä välikokeet taisivatkin mennä.

maanantai 2. helmikuuta 2009

3 tehtävää tarkastettu

Välikokeen tehtävät 1, 2 ja 5 on tarkastettu. Pistemäärien keskiarvot ovat 3,7, 3,4 ja 4,6. Täydet 18 pistettä löytyy viideltä.

lauantai 31. tammikuuta 2009

2 tehtävää tarkastettu

Ensimmäisestä välikokeesta on tarkastettu kaksi tehtävää viidestä. Tehtävän 1 ka. = 3,7 pistettä ja tehtävän 5 ka. = 4,6 pistettä. Täydet pisteet molemmista seitsemällä.

Olinkohan turhan pessimistinen tulosten suhteen...

perjantai 30. tammikuuta 2009

Välikokeista

Välikokeet olivat tiistaina 27.1, ja paperit ovat nyt tarkastuskierroksella. Osallistujia oli kaikkiaan noin 150, ja arvioisin että vastaukset saadaan tarkastettua parissa viikossa. Pikaisen vilkaisun perusteella vaikuttaisi, että aika moni oli jättänyt ratkaisunsa kesken tai kokonaan tekemättä. Esimerkiksi niin että tehtävät 1 ja 2 oli tehty, ja kolmosesta yksi kohta, minkä jälkeen paperilla oli vain tyhjää.

Tulkitsen tämän johtuvan siitä, että välikokeet olivat ensimmäiset kurssin historiassa, eikä tarjolla ollut vastaavia aikaisemman vuoden kysymyksiä opiskelua varten. Itsekin hieman yllätyin kysymyksiä suunnitellessani, koska vanhoissa tenteissä ei ollut juurikaan tehtäviä 1. välikokeen alueelta vaan pelkästään prujun loppupuolelta. Kaikki tehtävät olivat siis täysin uusia ja siinä mielessä yllätyksellisiä. Toisaalta välikokeilla on aina tapana mennä keskimäärin huonommin kuin tenteillä, koska sinne on helppo tulla kokeilemaan kepillä jäätä. Jos menee huonosti, niin suoritetaan kurssi sitten lopputentillä.

Huono menestys oli siis osin odotettavissa. Välikokeiden pitoa jatketaan silti tulevinakin vuosina, koska ne ovat uskoakseni hyvä tilaisuus tarkistaa oman osaamisensa taso. Lisäksi näin saadaan toivoakseni opiskelijat käyttämään enemmän aikaa asian opiskeluun.

Välikokeen kysymykset löytyvät kurssin alasivulta. Omasta mielestäni tehtävät 1, 2, 3, 4a ja 5a olivat helppoja. Tehtävä 4b on soveltava versio harkoissa olleesta tehtävästä, jossa piti laskea impulssivasteen h(n) lauseke askelvasteen z(n) perusteella. Harjoituksissa havaittiin, että tämä saadaan erotuksesta

h(n) = z(n) - z(n-1)

Pisteet tehtävästä saa riippumatta muistiko tuon kaavan ulkoa vai johtiko sen koepaperilla. Ajatuksena oli johtaa lauseke paperilla; ulkoa opetteluun en haluaisi kannustaa.

Tehtävässä 5b ratkaisu saadaan yksinkertaisimmin hoksaamalla siinä olevat kaksi peräkkäistä LTI-järjestelmää. Kyseessä on siis ns. kaskadi, jonka impulssivaste saadaan konvoluutiolla. Siis jos ylemmän järjestelmän impulssivaste on h1(n) ja alemman h2(n), niin kokonaisuuden impulssivaste on h(n) = h1(n) * h2(n).

Lopussa ollut muistikolmio meni näköjään väärin. Kolmiosta katsomalla näyttäisi että w6 = 1/sqrt(3) + 2i/sqrt(3) vaikka todellisuudessa w6 = 1/2 + i sqrt(3) / 2. Tämä huomioidaan arvostelussa niin, että myös virheellisen kolmion mukainen vastaus kelpaa.

keskiviikko 21. tammikuuta 2009

Vierailuluento ja FFT

Tiivistelmä. Ensimmäisellä tunnilla kuultiin Tapio Mannisen vierailuluento aiheesta "Iiris biometrisena tunnisteena". Esitys pohjautui Tapion kandityöhön, joka valmistui vuosi sitten. Sivumennen sanoen Tapio valmistui tekniikan kandidaatiksi "oivallisesti", mikä tarkoittaa keskiarvoa yli 4 ja kandityön arvosanaa vähintään 4 sekä automaattista 250 euron stipendiä TTY:ltä.

Iiriksentunnistus pohjautuu John Daugmanin kehittämään ja patentoimaan IrisCode-menetelmään. Algoritmi tunnistaa ensin iiriksen ja pupillin reunat sovittamalla niihin ympyrät. Näiden avulla iiriksen alue muunnetaan napakoordinaatistoon, ja saatu matriisi jaetaan edelleen 8x4 = 32 alueeseen. Kukin näistä alueista projisoidaan pistetulon avulla ns. Gabor-kantaan (suodatetaan Gabor-suotimilla). Puhutaan myös Gabor-muunnoksesta, mikä viittaa siihen että kyseessä on hieman viritetty versio Fourier-muunnoksen kaksiulotteisesta yleistyksestä (ks. myös prujun sivut 96-99). Näin jokaisesta alueesta jää jäljelle yksi kompleksiluku kutakin 32:a Gabor-aalloketta kohti. Tämän kompleksiluvun vaihe kvantisoidaan neljään arvoon, jotka voidaan kuvata kahdella bitillä. Kaikkiaan saadaan siis 32 x 32 x 2 = 2048 bittiä pitkä bittijono, joka toimii tunnisteena. Lopuksi pohdittiin kuinka päätellään kuvaavatko kaksi bittijonoa samaa silmää. Tässä oli apuna tilastomatematiikka niin, että arvioitiin jakaumat ns. Hamming-etäisyydelle samoille ja eri silmille. Näin voidaan arvioida virhepäätelmän todennäköisyyttä, mikä on olennainen osa järjestelmän myyntipuheita sekä sen lakiteknistä luotettavuutta.

Toisella (hieman lyhennetyllä) tunnilla tarkasteltiin Fourier-muunnoksen ominaisuuksia sekä FFT:tä. Ominaisuuksista tutustuttiin lähemmin siirtoon ajassa (esim. laske signaalin x(n+20) muunnos, kun tiedetään x(n):n muunnos) sekä konvoluution muunnokseen (DFT muuntaa konvoluution kertolaskuksi, eli x(n)*y(n) -> X(n)Y(n)). Tämä on myös pohjana konvoluution käytölle suodatuksessa: suunnitellaan vaan h(n) niin että H(n) nollaa poistettavat taajuudet, kun suodatetaan konvoluutiolla: y(n) = h(n)*x(n).

Luennon viimeiset 10 minuuttia käsiteltiin nopeaa Fourier-muunnosta eli FFT:tä, joka on vain nopeampi tapa toteuttaa DFT. FFT perustuu signaalin jakamiseen lyhyempiin pätkiin, jotka muunnetaan jakamalla ne edelleen rekursiivisesti kahtia. Rekursio päättyy, kun muunnoksen pituus on 1, jolloin muunnosta ei tarvitse enää tehdä. 1-ulotteisen vektorin tapauksessa muunnosmatriisi on yksinkertaisesti F = [1], joka tarkoittaa pelkkää ykkösellä kertomista eikä sitä tarvitse tehdä. Lyhyemmistä vektoreista saadaan koostettua pidemmät vektorit kaavoilla (3.3) ja (3.4). Kaavan käyttöä ja sivun 47 esimerkkiä ei ehditty käsitellä, vaikka vastaava tehtävä onkin seuraavissa harjoituksissa. Pahoittelut tästä.

Kysymys. Luennon jälkeen kysyttiin mitä välikokeeseen tulee. Kokeeseen tulee prujun sivut 1-45, kappaleeseen 3.4.2 (FFT) asti. FFT:tä ei enää tule koska sitä ei ehditty käsitellä kunnolla.

tiistai 20. tammikuuta 2009

Kysymys muunnosmatriisista kun N = 3

Sähköpostitse tuli kysymys, kuinka sivun 42 alemman esimerkin (N=3) muunnosmatriisiin on saatu nuo -1/2-i*sqrt(3)/2 ja vastaavat? Nythän siis matriisin kaikki termit ovat ykkösen kolmannen juuren eri potensseja. Ykkösen kolmas juuri sijaitsee yksikköympyrällä kulmassa, joka on kolmasosa koko ympyrästä. Luku on siis

w3 = exp(i*2*pi/3) = cos(2*pi/3) + i*sin(2*pi/3)

Prujun muoto saadaan muistikolmion perusteella. Radiaaneissa ilmaistu kulma 2*pi/3 vastaa nimittäin 60 astetta. Kateettien suhteet hypotenuusaan kyseisessä muistikolmiossa ovat 1/2 ja sqrt(3)/2. Etumerkit reaali- ja imaginaariosille voi järkeillä sivun 42 kuvasta.

Joskus kysyin tentissä muunnosmatriisia kun N = 2. Yllättävän harva keksi ratkaisun.

keskiviikko 14. tammikuuta 2009

Blogi perustettu

Olen jo pidempään harkinnut oman blogin perustamista kurssille, koska luentojen jälkeen ja sähköpostitse tulee hyviä kysymyksiä joihin olisi kiva vastata. Lisäksi luennon asioiden lyhyt kirjaaminen päiväkirjaan helpottaa elämää niiden osalta, jotka eivät pääse luennolle. Kolmantena syynä on jatkuvasti pudonnut kurssipalautteen määrä. Toivottavasti tämä menettely lisää kommunikaatiota. Merkintöjen kommentointi on siis tervetullutta ja sen pitäisi onnitua anonyymisti. Pyrin päivittämään blogin kerran viikossa luentojen jälkeen.

Tiivistelmä: 14.1 luennolla jatkettiin Fourier-muunnoksen opiskelua ja päästiin sivulle 41 asti. Jatkuvasta tapauksesta todettiin ratkaisun käytännössä tapahtuvan muunnostaulukoiden avulla, jollainen löytyy esimerkiksi Wikipedian "Fourier Transform" -artikkelista. Tämän jälkeen jatkettiin kappaleen 3 DTFT:llä, josta tuli kysymys liittyen sivun 39 ylälaidan kahteen kuvaan. Ylempi kuva esittää Fourier-muunnoksen itseisarvoa, ja alempi sen vaihekulmaa. Itseisarvo kertoo millä voimakkuudella kyseinen taajuus on mukana ja vaihekulma kertoo missä vaiheessa taajuuden täytyy olla. Molemmissa kuvaajissa olennainen väli on [0,pii], missä pii vastaa Nyquistin rajataajuutta (Fs/2), ja nolla on nollataajuus. Piirrettiin Matlabilla itseisarvon ja vaihekulman kuvaajat signaalille "Seitsemän".

Tämän jälkeen jatkettiin Diskreettiin Fourier-muunnokseen ja sen matriisimääritelmään. Laskettiin taululla yksi esimerkki Fourier-muunnoksesta tapauksessa N = 4, ja pääpaino oli matriisin muodostamisessa.

Lopuksi mainittiin lyhyesti, että FFT on nopea toteutus matriisimuunnoksen tilalle, ja näiden nopeutta vertaillaan ensi viikon viikkoharjoituksissa.

Kysymys: Luennon jälkeen tuli kysymys, voiko viikkoharjoituksessa 2.17 käyttää piirianalyysin kurssilla esiteltävää menetelmää differenssiyhtälöiden ratkaisuun. Menetelmässä etsitään yksittäisratkaisu ja yleinen ratkaisu ns. yritteen avulla, ja lopullinen tulos saadaan yhdistämällä nämä. IIR-suodin on differenssiyhtälö, joten tämä menetelmä on käyttökelpoinen IIR-suotimen impulssivasteen laskentaan. Käytännöllinen se on kuitenkin vain tapauksessa, jossa heräte on vain muodossa x[n] (eikä esim. x[n-1] ole mukana). Tällöinkin menetelmä saadaan toimimaan, mutta melko hankalasti. Tämä on myös syynä siihen, että oppikirjoissa on esimerkkejä ainoastaan tästä tapauksesta. Käytännöllisin menetelmä impulssivasteen laskentaan saadaan z-muunnoksesta, joka tulee vastaan kappaleessa 5.