Tänään käsiteltiin ää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.
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 desibelillä.
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ä).
Toisen tunnin lopuksi 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ä.
Tänään luennon aluksi käytiin läpi viimeviikkoinen välikoe, minkä jälkeen tutkittiin IIR-suodatusta sekä Matlabin valmiita IIR-suodattimen
suunnittelumenetelmiä.
Välikoetta ei ole vielä tarkastettu. Pyrin hoitamaan asian ensi viikkoon mennessä.
IIR-suodinten suunnittelun aluksi muisteltiin 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.


Menetelmä ei luonnollisestikaan ole kovin tarkka. Kappaleessa 6 esitetäänkin menetelmiä tarkempaan IIR-suodinten suunnitteluun, ja ne käydään 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ä on esim. kurssin SGN-16006 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. Harjoitustyössä on yhtenä tehtävänä ns. Goertzel-algoritmin toteutus yksittäisen taajuuden tunnistuksessa. Goertzel-algoritmi hyödyntää epästabiilia suodinta, joka vahvistaa etsittävää taajuutta äärettömän paljon. Tästä ei kuitenkaan seuraa katastrofia, jos suotimen annetaan toimia vain vähän aikaa (esim 256 näytettä).
Luennolla kysyttiin mistä IIR-suodintyyppien nimet ovat peräisin.
- Butterworth-suodin on nimetty fyysikko Stephen Butterworthin mukaan, joka esitteli analogisen Butterworth-suotimen 1930.
- Chebyshev-suotimet juontavat juurensa Chebyshev-polynomeihin, joita käytetään numeerisessa approksimoinnissa: esim. Matlab saattaa laskea logaritmifunktion todellisuudessa Chebyshev-polynomin avulla, jossa kertoimet on sovitettu niin että polynomi on paikallisesti lähellä logaritmia. Chebyshev-polynomien hyvä ominaisuus on, että niillä saatava maksimivirhe on mahdollisimman pieni ("minimax criterion"; "minimal L-Infinity norm"). Tämä on sama asia kuin tasavärähtely-ominaisuus.
- Elliptinen suodin perustuu ns. elliptisiin rationaalifunktioihin, ja yhteys on varsin matemaattinen.
Suodinsuunnittelussa on paljon yhteistä numeerisen approksimoinnin kanssa, koska sitähän suodinsuunnittelu olennaisesti onkin: pyritään löytämään suodin jonka amplitudivaste approksimoi ideaalista vastetta mahdollisimman tarkasti.
Tänään käsiteltiin kappale 5 loppuun. Alussa oli alla olevan kuvan mukainen demo, jossa suotimen kertoimien määrää kasvatettiin ja havaittiin ettei amplitudivastetta saa tällä keinolla tiettyjen rajojen alle.
Tämän jälkeen käytiin kappale 5 loppuun, ja todettiin että suodinsuunnittelu sisältää seuraavat vaiheet.
- Valitse ikkuna vaimennusvaatimusten perusteella.
- Päättele tarvittava kertoimien määrä N siirtymäkaistan leveyden (delta_f) perusteella.
- Laske ideaalinen impulssivaste (vaatii siirtymäkaistan keskipisteen f_c laskennan).
- Kerro ideaalinen impulssivaste valitun ikkunafunktion lausekkeella.
Taululla ratkaistiin toukokuun 2013 tentin tehtävä 4, jossa suodinsuunnittelu tehdään alusta loppuun paperilla. Yleisiä tentissä esiintyviä virheitä ovat:
- Muuttujat f_c ja delta_f sekoittuvat keskenään
- Käytetään normalisoimattomia taajuuksia (esim. 11000 eikä 11000/32000)
- Rajataajuudet on laskettu väärin tai sekoitettu keskenään.
- Ikkuna on valittu väärin tai N on laskettu väärin.
- Lopputuloksessa on avoimia muuttujia (f_c, delta_f tai N).
Toisen tunnin lopuksi luotiin katsaus kahteen sovellukseen. Ensimmäinen oli Kaggle-alustalla ollut epilepsian tunnistuskilpailu, jonka olennaisena komponenttina on EEG-signaalin jako taajuuskaistoihin. Kilpailun aineisto oli huomattavan suuri, joten ennustuksen vaatimasta laskennasta valtaosa kului taajuuksien erottelussa (eli suodatuksessa). Sijoituimme kilpailussa sijalle 31.
Toisena sovelluksena mainittiin TTY-lähtöinen Yousician-yritys, joka suunnittelee akustisilla soittimilla ohjattavia pelejä. Tässä haasteena on soitetun nuotin luotettava tunnistus mikrofonisignaalista, missä suodatuksella on keskeinen rooli.