Säätötekniikan ja signaalinkäsittelyn työkurssi Työ D102: Sinimuotoisen signaalin suodattaminen 0.4 op. Julius Luukko Lappeenrannan teknillinen yliopisto Sähkötekniikan osasto/säätötekniikan laboratorio
Sisältö 1 Johdanto 1 2 Työn sisältö 1 3 Työn tausta 1 3.1 FIR-suodattimet............................ 1 3.2 FIR-suodatinten taajuusvaste.................... 2 4 Harjoitustyön osat 3 4.1 Lämmittelyosa............................. 3 4.2 Harjoitusosa.............................. 4 4.2.1 Ensimmäinen differenssi -suodatin............. 5 4.2.2 Suodattimen lineaarisuus.................. 6 4.2.3 Suodattimen aikainvarianssi................ 6 4.2.4 Kahden järjestelmän kaskadi................ 6 Tämä versio: 5. toukokuuta 2006 kello 9:01 i
1 Johdanto Työssä tarkastellaan LTI-järjestelmien ominaisuuksia ja FIR-suodatinten toimintaa. Työssä tarvittavat teoreettiset perusteet löytyvät oppikirjan [1] luvuista 2-4. Työn laajuus on 0.4 opintopistettä. Tämä työohje löytyy html-muodossa osoitteesta http://www.ee.lut.fi/courses/sa2730600/d102/index.html sekä pdf-muodossa osoitteesta http://www.ee.lut.fi/courses/sa2730600/ D102/D102.pdf. 2 Työn sisältö Työ jakaantuu kahteen osaan, lämmittelyyn ja harjoitusosaan. Lämmittelyosan tarkoituksena on kerrata Matlabin perusominaisuuksia. Harjoitusosassa tarkastellaan signaalien esittämistä Matlabilla. Lämmittelyosa suoritetaan hyväksymismenettelyllä ja harjoitusosasta palautetaan raportti, joka arvostellaan. Lämmittelyosan suorittamisen varmistamiseksi ohjaaja täyttää tämän ohjeen liitteenä olevan varmistuslomakkeen. Varmistuslomake liitetään harjoitusosan raporttiin. 3 Työn tausta 3.1 FIR-suodattimet FIR-suodatin on diskreettiaikainen järjestelmä, joka voidaan kuvata differenssiyhtälöllä M 1 y(n) = b k x(n k) (3.1) k=0 Yhtälö 3.1 kertoo, miten lasketaan ulostulon y n:s arvo y(n) tietystä joukosta sisäänmenon arvoja. Suodattimen kertoimet {b k } ovat vakioita, jotka määräävät suodattimen toiminnan. Tarkastellaan esimerkiksi järjestelmää, jonka ulostulo on y(n) = 1 3 x(n) + 1 3 x(n 1) + 1 x(n 2) 3 = 1 (3.2) 3 [x(n) + x(n 1) + x(n 2)] Yhtälön mukaan ulostulon n:s arvo on keskiarvo sisäänmenon n:nnestä arvosta x(n) ja kahta sitä edeltävästä arvosta x(n 1) ja x(n 2). Tässä esimerkissä siis kertoimet b k ovat b 0 = 1/3, b 1 = 1/3 ja b 2 = 1/3. Matlabissa on sisäänrakennettu funktio (ei siis osa Signal Processing Toolboxia) filter, jolla voidaan laskea suodattimen ulostulo. filter toimii myös IIR- Tämä versio: 5. toukokuuta 2006 kello 9:01 1
tyyppisille suodattimille, ts. järjestelmille, jotka voidaan kuvata differenssiyhtälöllä N 1 M 1 a k y(n k) = b k x(n k). (3.3) k=0 Funktiota filter käytetään seuraavasti y = filter(b,a,x); k=0 missä b on kertoimet {b k } ja a kertoimet {a k } sisältävä rivivektori. FIR-suodatin on erikoistapaus yleisestä differenssiyhtälöstä siten, että kertoimet {a k } = 1. Matlabilla FIR-suodattimen ulostulo lasketaan siksi seuraavasti y = filter(b,1,x); FIR-suodattimen ulostulo voidaan laskea myös kahden sekvenssin konvoluution laskevalla funktiolla conv. Tähän palataan lämmittelyosassa. 3.2 FIR-suodatinten taajuusvaste Suodattimen ulostulo eli vaste kompleksisella eksponenttifunktioherätteellä e jωn riippuu taajuudesta ω. Usein suodattimen ominaisuuksia kuvataan juuri siten, miten se vaikuttaa eri taajuuksisiin signaaleihin. Tätä kuvataan taajuusvasteella. Otetaan esimerkiksi 2:n pisteen liukuvankeskiarvon suodatin, jonka differenssiyhtälö on y(n) = 1 2 x(n) + 1 x(n 1). (3.4) 2 Suodattimen taajuusvaste saadaan selville, kun suodattimeen syötetään kompleksinen eksponenttifunktio yleisessä muodossa ja laskemalla ulostulo x(n) = Ae jωn+φ (3.5) y(n) = 1 2 Aejωn+φ + 1 2 Aejω(n 1)+φ = = Ae jωn+φ 1 2 ( 1 + e jω) (3.6) Ulostulon havaitaan muodostuvan kahdesta termistä, alkuperäisestä sisäänmenosta x(n) = Ae jωn+φ sekä termistä, joka on kulmataajuden ω funktio. Tämä toinen termi on suodattimen taajuusvaste ja sitä merkitään H(ω). Tässä esimerkin tapauksessa siis H(ω) = 1 2 ( 1 + e jω) (3.7) Kun taajuusvastefunktio on määritetty kulmataajuuden ω funktiona, suodattimen vaikutus minkä tahansa taajuiseen signaaliin voidaan määrittää laskemalla H(ω):n arvo vastaavalla taajuudella. Tulos on kompleksiluku, jonka kulma kompleksitasossa ilmaisee, kuinka suuren vaihesiirron suodatin aiheuttaa kyseisen taajuiselle signaalille. Kompleksiluvun pituus (amplitudi) ilmaisee suodattimen aiheuttaman vahvistuksen kyseisen taajuiselle signaalille. Tämä versio: 5. toukokuuta 2006 kello 9:01 2
Yleisessä tapauksessa taajuusvasteen määritelmä saaadaan tarkastelemalla yleistä LTI-järjestelmää y(n) = k= h(k)x(n k), (3.8) missä {h(k)} on järjestelmän yksikköimpulssivaste. Syötetään järjestelmään heräte x(n) = Ae jωn+φ ja lasketaan ulostulo y(n) = [ ] h(k) e jω(n k) + φ k= ] (3.9) h(k)e jωk e jωn+φ = A [ k= Taas havaitaan, että vaste muodostuu alkuperäisestä herätteestä sekä termistä, joka on järjestelmän taajuusvastefunktio H(ω) = h(k)e jωk. (3.10) k= Kausaalisen FIR-suodattimen tapauksessa yhtälö supistuu muotoon H(ω) = M 1 h(k)e jωk. (3.11) k=0 Matlabin Signal Processing Toolboxissa on funktio freqz, joka piirtää LTI-järjestelmän taajuusvasteen suoraan kertoimien {a k }, {b k } perusteella. Piirretään esimerkkinä edellä olleen 2:n pisteen liukuvan keskiarvon suodattimen taajuusvaste kulmataajuusvälillä π ω π: b = [1/2 1/2]; w = -pi:(pi/100):pi; H = freqz(b,1,w); plot(w, abs(h)) FIR-suodattimilla freqz:n toinen parametri on aina 1 vastaavalla tavalla kuin filter-funktion kanssa. 4 Harjoitustyön osat 4.1 Lämmittelyosa Tässä osassa kerrataan taajuusvasteen käsitettä sekä taajuusvasteen piirtämistä Matlabilla. Edellä on esimerkkeinä käytetty liukuvan keskiarvon suodattimia, jotka siis laskevat ulostulon arvoksi sisäänmenon nykyisen arvon ja tietyn määrän edellisiä arvoja keskiarvon. Tällaisen suodattimen kertoimet {b k } ovat aina yhtä Tämä versio: 5. toukokuuta 2006 kello 9:01 3
suuria. Yleisessä muodossa tällaisen suodattimen differenssiyhtälö on muotoa y(n) = 1 L L 1 x(n k). (4.1) k=0 1. Osoita, että kolmen pisteen liukuvan keskiarvon suodattimen taajuusvaste on H(ω) = 2 cos ω + 1 e jω (4.2) 3 2. Laske yhtälön 4.2 arvo suoraan Matlabilla. Käytä taajuutena vektoria, joka sisältää 401 pistettä väliltä π... π. (a) Piirrä taajuusvasteen kuvaaja käyttämällä funktiota plot. Erota amplitudi ja vaihe funktioilla abs ja angle. (b) Piirrä taajuusvaste funktiolla freqz kirjoittamalla suoraan freqz(b,1). (c) Miten voit itse piirtää funktiolla plot samanlaisen kuvaajan kuin saat funktiolla freqz, mutta suomenkielisillä teksteillä? 3. Mikä on suodattimen vaimennus taajuudella π/3. Katso ensin kuvaajasta ja laske sitten sekä suoraan yhtälöä 4.2 käyttäen että Matlabin funktiolla freqz. 4. Osoita, että FIR-suodattimen ulostulo voidaan laskea konvoluutiolla y(n) = h(n) x(n) (4.3) Miksi IIR-suodattimen ulostuloa ei käytännössä voi laskea konvoluutiolla? 5. Luo kosinisignaalin sisältävä vektori seuraavasti n = 0:99; x = cos( 0.08*pi*n); b = 1/3*ones(1,3); Suodata x vektoriin yf funktiolla filter ja vektoriin yc funktiolla conv. Ovatko yf ja yc yhtä pitkiä. Jos eivät, niin miksi eivät? 4.2 Harjoitusosa Harjoitusosassa tutustutaan siihen, miten suodattimet vaikuttavat sinimuotoisiin (tai kosini-) sisäänmenoihin. Tavoitteena on ymmärtää seuraavat asiat: 1. Yhtälön 3.1 muotoiset suodattimet voivat muuttaa sinisignaalin amplitudia ja vaihetta, mutta eivät taajuutta. 2. Suodatin käsittelee siniaaltojen summan kutakin komponenttia toisista komponenteista riippumatta. 3. Suodattimet voivat kokonaan poistaa tietyn taajuisia siniaaltoja. Tämä versio: 5. toukokuuta 2006 kello 9:01 4
4.2.1 Ensimmäinen differenssi -suodatin Seuraavassa tarkastellaan diskreettiaikaisia sinisignaaleita, jotka ovat muotoa x(n) = A cos (ωn + φ), n = 0, 1,..., L 1 (4.4) Signaalin diskreetti kulmataajuus ω on aina välillä 0 ω π. Jos signaali saadaan aikaan näytteistämällä jatkuva-aikaista signaalia, on diskreettiaikaisen ja jatkuva-aikaisen signaalin taajuuksien välillä yhteys ω = 2πF F s (4.5) missä F on jatkuva-aikaisen signaalin taajuus ja F s näytteenottotaajuus. Luo 50 näytettä pitkä kosiniaalto yhtälön 4.4 mukaisesti arvoilla A = 7, φ = π/3 ja ω = 0.125π. Talleta signaali vektoriin x, jotta sitä voidaan käyttää jatkossa. Käytä funktiota conv seuraavalla differenssiyhtälöllä ilmaistun suodattimen toteuttamiseen y(n) = 5x(n) 5x(n 1). (4.6) Tällainen suodatin on nimeltään ensimmäinen differenssi, mutta tässä vahvistuksella 5. 1. Suodata x vektoriin y. Mikä on suodatetun sekvenssin pituus? Miksi? 2. Piirrä ensimmäiset 50 näytettä molemmista signaaleista samaan kuvaan komennon subplot avulla. Käytä varsinaiseen piirtämiseen funktiota stem funktion plot sijasta. Piirrä sekvenssit siten, että x-akselilla on arvot 0 x 49. 3. Piirrä toiseen kuvaan samalla tavalla signaalien kuvaajat funktiolla plot. 4. Havainnoi kuvista, että jos ensimmäinen näyte jätetään huomiotta, suodatettu sekvenssi y näyttäisi olevan skaalattu ja vaihesiirretty versio suodattimen sisäänmenosekvenssistä x. Selitä, miksi ensimmäinen näyte poikkeaa. 5. Selvitä kuvan ja Matlabin funktion max avulla, mikä on sekvenssien x ja y amplitudi ja diskreetti taajuus. 6. Selvitä sekvenssien välinen vaihe-ero. Onko vaihe-ero negatiivinen vai positiivinen? Vihje: Etsi kaksi toisiaan vastaavaa näytettä ja laske niiden vaiheero ensin näytteissä. Laske sitten sama kulmana asteina tai radiaaneina. 7. Luonnehdi suodattimen toimintaa taajuudella ω = 0.125π laskemalla ulostulon suhteellinen amplitudi (ulostulon amplitudin suhde sisäänmenon amplitudiin) ja kertomalla sen aiheuttama vaihe-ero ko. taajuudella (selvitettiin jo edellä). 8. Johda suodattimen vahvistuksen ja vaihe-eron lausekkeet teoreettisesti. Laske vahvistuksen ja vaihe-eron arvot taajuudella ω = 0.125π ja vertaa niitä edellä selvittämiisi tuloksiin. Jos tulokset poikkeavat, selitä miksi. Tämä versio: 5. toukokuuta 2006 kello 9:01 5
4.2.2 Suodattimen lineaarisuus 1. Kerro edellä luomasi vektori x kahdella ja talleta tulos vektoriin xa, siis xa=2*x. Suodata signaali vektoriin ya samalla suodattimella kuin edellä. 2. Luo uusi sisäänmenosignaali, joka vastaa diskreettiaikaista signaalia x b (n) = 8 cos (0.25πn) (4.7) Talleta tulos vektoriin xb. Suodata signaali convilla vektoriin yb. Toista edellisen kohdan numerot 5 ja 6 xb:lle ja yb:lle. 3. Muodosta vielä yksi sisäänmenosignaali xc, joka on xa:n ja xb:n summa. Suodata signaali convilla vektoriin yc. Vertaa yc:tä summaan ya+yb. Havaitsetko mitään eroa? Selitä mahdollisesti havaitsemasi ero. Voitko olettaa suodattimen olevan lineaarinen havaintojesi perusteella? 4.2.3 Suodattimen aikainvarianssi Viivästä signaali x kolmella näytteellä eli luo vektori xs, joka vastaa signaalia x s (n) = 7 cos (0.125π(n 3) + π/3). (4.8) Suodata signaali vektoriin ys. Vertaa ys:ää ja y:tä. Kuinka monta näytettä y:tä on viivästettävä, jotta y ja ys ovat yhtenevät? (jätä ensimmäinen ja viimeinen näyte huomiotta) Onko suodatin tällä perusteella aikainvariantti? 4.2.4 Kahden järjestelmän kaskadi Monimutkaisempia järjestelmiä kootaan usein yksinkertaisista osista. Otetaan esimerkiksi järjestelmä, jossa epälineaarinen järjestelmä (toiseen potenssiin korotus) on kytketty kaskadiin FIR-suodattimen kanssa. x(n) w(n) = (x(n)) 2 y(n) ( ) 2 FIR Kuva 1: Järjestelmä, jossa epälineaarinen järjestelmä on kaskadissa FIR-suodattimen kanssa. 1. Järjestelmää kuvaa kaksi yhtälöä: w(n) = [x(n)] 2 (4.9) y(n) = w(n) w(n 1) (4.10) Toteuta tämä järjestelmä Matlabilla. Käytä sisäänmenona vektoria x. 2. Piirrä vektorit x, w ja y samaan kuvaan (subplot). Tämä versio: 5. toukokuuta 2006 kello 9:01 6
3. Mitä taajuuksia signaalit sisältävät? Tee päätelmiä järjestelmän eri osien lineaarisuudesta. Onko koko järjestelmä lineaarinen vai epälineaarinen? 4. Selitä lineaarisuusominaisuuden perusteella, mitä tapahtuu signaalille w FIR-suodattimessa. Vihje: Tarkastele, miten eri taajuuskomponentit menevät suodattimen läpi. 5. Korvaa FIR-suodatin toisen kertaluvun FIR-suodattimella, jonka differenssiyhtälö on y 2 (n) = w(n) 2 cos(0.25π)w(n 1) + w(n 2) (4.11) Muodosta x:n neliö ja suodata. Mitä taajuuksia y2 sisältää? Selitä, miksi suodatin suodattaa taajuuden ω = 0.25π kokonaan pois. Vihje: Johda FIRsuodattimen ulostulon lauseke, kun sisäänmeno on e j0.25πn yhtälöiden 3.5 ja 3.6 tapaan. Viitteet [1] J. G. Proakis and D. G. Manolakis, Digital Signal Processing Principles, Algorithms, and Applications. Prentice-Hall, Inc., 3 ed., 1996. Tämä versio: 5. toukokuuta 2006 kello 9:01 7
Työ D102: Sinimuotoisen signaalin suodattaminen Ohjaajan varmistus lämmittelyosan suorittamisesta Liitä tämä sivu harjoitusosan raporttiin Ryhmän jäsenet: Ohjaaja täyttää seuraavat kohdat: 1. 2. (a) (b) (c) 3. 4. 5. Päiväys: Ohjaaja: