keskiviikko 26. helmikuuta 2014

FIR-Suotimen suunnittelu ikkunamenetelmällä

Tänään opiskeltiin FIR-suotimen suunnittelua (kappale 5). Ruokahalun kasvattamiseksi vilkaistiin kuitenkin ensin radiotaajuuksisten signaalien käsittelyä ohjelmistollistesti. Niin sanottu ohjelmistoradio (software defined radio) tekee käyttää digitaalista signaalinkäsittelyä korvaamaan perinteisempiä elektronisia komponentteja tiedonsiirrossa. Ohjelmistoradio avaa uudenlaisia mahdollisuuksia mm. taajuuskaistan tehokkaammaksi hyödyntämiseksi, ja sitä tutkitaankin aktiivisesti mm. TTY:n tietotekniikan laitoksella.

Suodinsuunnittelun tavoitteena on saada amplitudivaste 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. Oikealla olevan kuvan mukaisen demoodettiin, 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.

Ideaalisen suotimen impulssivasteen pituus on ääretön, eikä sitä voi käytännössä toteuttaa. Näin ollen impulssivaste on katkaistava, mistä seuraa vääristymä amplitudivasteeseen. Matlab-testeillä havaittiin, että 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ä. Ikkunoiden ominaisuuksi havainnollistettiin oheisen kuvan mukaisella demolla.

Luennon lopuksi käytiin taululla esimerkki ikkunamenetelmän käytöstä vuoden 2011 toukokuun tentissä.

keskiviikko 19. helmikuuta 2014

Suodinsuunnittelua

Tänään käsiteltiin kappale 4 loppuun ja aloitettiin kappaletta 5.

Kappaleen 4 kaksi viimeistä lukua käytiin läpi ratkaisemalla monisteen harjoitustehtävä 4.9. Tässä tehtävässä on annettu suotimen siirtofunktio H(z), josta täytyy ratkaista differenssiyhtälö. Ratkaisu on tässä tapauksessa

y(n) = 4x(n) + 4x(n-1) + 4x(n-2) - 4y(n-2)

Lisäksi piirrettiin kyseisen suotimen napa-nollakuvio, josta kävi ilmi ettei suodin ollut stabiili (miksi?).

Yleisöstä tuli kysymys, pitääkö napojen olla yksikköympyrän sisällä vai saako olla kehällä. Vastaus on että stabiilin suotimen navat eivät saa olla kehälläkään. Jos napoja on kehällä, sanotaan suodinta marginaalisesti stabiiliksi, mikä tarkoittaa että vain yksittäisillä taajuuksilla on ääretön vahvistus. Jos siis signaalista on ensin poistettu vaaralliset taajuudet, toimii suodin tällöin stabiilisti.

Esimerkki marginaalisesti stabiilin suotimen hyötykäytöstä löytyy esim. SGN-työkurssin signaaliprosessorityön neljännen tehtävän Goertzel-algoritmista.

Toisella tunnilla tutustuttiin suotimen suunnitteluun. Yksinkertainen tapa suunnitella taajuusselektiivisiä suotimia on sijoitella napoja ja nollia sopivasti yksikköympyrälle. Menetelmästä käytetään nimeä pole zero placement method, jonka ongelmana on epätarkkuus. Esimerkkinä oli demo, jossa napoja ja nollia sijoiteltiin hiirellä yksikköympyrälle.

Toisella tunnilla tarkasteltiin suotimen suunnittelua annetuista kriteereistä lähtien. 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. Matlabissa tällainen kuvaaja saadaan esim. komennoilla:

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

Freqz-funktiosta saa siis ulos taajuusvastefunktion arvoja vektorissa H. Vektorissa on lueteltu taajuusvasteen kompleksiset lukuarvon 512:ssa pisteessä taajuusakselilla. 

Vaihevasteen 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.

keskiviikko 12. helmikuuta 2014

Taajuusvaste, siirtofunktio ja desibeli

Tänään käsiteltiin kappaletta 4. 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.

Kaikki lähtee liikkeelle konvoluution ja z-muunnoksen yhteydestä: konvoluutio muuttuu kertolaskuksi z-muunnoksessa. Jos siis suodatus noudattaa yhtälöä

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

on sama yhtälö voimassa myös z-tasossa:

Y(z) = H(zX(z)

Tällöin impulssivasteen h(n) 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 sijoittamalla z = exp(iw), jolloin herätteen ja vasteen välinen suhde muuttuu muotoon: 
Y(exp(iw)) = H(exp(iw)X(exp(iw))
(eli vasteen taajuudet = taajuusvaste * herätteen taajuudet).
Lauseke H(exp(iw)) on siis 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.

Suotimen analyysi käytiin läpi monisteen kaavan (4.3) suotimella. 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.Vaihevaste puolestaan kertoo paljonko eri taajuudet viivästyvät suodatettaessa.

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

keskiviikko 5. helmikuuta 2014

Fourierista linnunlaulun kautta Z-muunnokseen

Tänään käsiteltiin kappale 3 loppuun sekä aloitettiin kappaletta 4. Kappaleen 3 aiheita olivat FFT, kaksi jatkuva-aikaista Fourier-muunnosta sekä diskreettiaikainen Fourier-muunnos (DTFT). Jatkuvia muunnoksia tarvitaan mm. tietoliikennesignaalien taajuusanalyysissä selvitettäessä kuinka laajalle taajuusalueelle jokin signaali levittäytyy.

Fourier-muunnosten tarkastelun jälkeen tehtiin lyhyt ekskursio yleisempien hajotelmien puolelle. Fourier-analyysissähän kysytään kuinka paljon kutakin sinisignaalia on mukana tarkasteltavassa signaalissa. Yleisempi muoto on käyttää jotain muuta signaalikokoelmaa, tai oppia tämä kokoelma datasta. Klassiset menetelmät ovat pääkomponenttianalyysi (PCA) tai Helsingissä kehitetty riippumattomien komponenttien analyysi (ICA), joissa signaalit esitetään sellaisten rakennuspalikoiden avulla että suuria kertoimia tulee mahdollisimman vähän.

Käytimme erästä tällaista hajotelmaa osallistuessamme Kaggle-alustalla organisoituun linnunlauluntunnistuskilpailuun. Alkuvaiheessa käytimme mm. Fourier-muunnosta, mutta pelkkä taajuuksien analyysi ei tuottanut tulosta. Tämän vuoksi päätimme oppia "sanakirjan" suoraan datasta, ja toivoimme että sanakirjaan päätyisi tyypillisiä eri lintulajien viserryksiä. Näiden viserrysten lukumäärä toimi sitten indikaattorina siitä mitä lintulajeja äänityksessä oli.

Toisen tunnin loppupuolella tarkasteltiin Z-muunnosta ja sen tärkeimpiä ominaisuuksia. Z-muunnoksen avulla voidaan selvittää mm. suotimen stabiilisuus: suodin on stabiili jos kaikki siirtofunktion navat ovat yksikköympyrän sisäpuolella.