Johdatus signaalinkäsittelyyn (syksy 2008)
Matlab harjoituksenn 1 ohje:
Tausta ja tavoite
Tutustutaan matlab ohjelmaan matlabin demojen
(http://www.mathworks.com/products/matlab/demos.html)avulla ja opettajan ohjaamana.
Tehtävät
1. Suorita (kuuntele) Matlabin Getting Started with Matlab –demo. Demon jälkeen muodosta matlabin työpöydälle vektori x, joka saa arvot 1,2,3,....100 ja y = cos(2*(pi / 50)*x). Piirrä y:n arvot x:n funktiona matlabin plot funktiota käyttäen. Tarkastele piirtämääsi kosini signaalia.
Montako näytettä otetaan yhdestä kosinin jaksosta? Vahvista kosini signaalia 5:llä ja lisää siihen pi/2:n vaihesiirtymä.
2. Suorita (kuuntele) Matlabin Working in the Development Environment –demo. Demon jälkeen laske edellisen tehtävän vektorin y näytteiden keskiarvo FOR-END kontrollirakennetta käyttäen.
Katso FOR-END rakenteen syntaksi matlabin help toimintoa apuna käyttäen. Mitä muista ohjelmointikielen rakenteita löydät.
3. Suorita (kuuntele) Matlabin writing a MATLAB Program –demo. Demon jälkeen kirjoita matlab skripti (ohjelma), joka laskee signaalin y keskiarvon ja hajonnan. Katso Matlabin std funktion kuvaus mutta älä käytä funktiota, vaan ohjelmoi hajonnan laskenta FOR-END kontrollirakennetta käyttäen.
4. Muuta tehtävässä 3 muodostettu skripti funktioksi, joka ottaa input parametreina signaalin (y) ja joka tulostaa output parametrinaan signaalin keskihajonnan.
5. Muodosta Matlabin työtilassa ensin signaalit t=(1:100) ja y=sin(2*pi/50*t)+sin(2*pi/10*t).
Kirjoita sen jälkeen funktio keskiarvosuodatus, joka toteuttaa liukuvasti keskiarvoistavan suodattimen (keskiarvon voit laskea mean -komennolla ja signaalin pituuden saat selville length –komennolla). Suodattimelle annetaan parametreina suodatettava signaali ja ikkunan pituus.
Tuloksena funktio palauttaa suodatetun signaalin. Testaa suodatintasi signaalilla y pyrkien suodattamaan pois nopeammin vaihtelevan sini komponentin. Millä ikkunan pituudella suodatus toimii parhaiten?
6. Muodosta vektori b = ones(1,ikkunan_pituus), missä ikkunan pituus on edellisessä tehtävässä löydetty paras arvo. Vertaile oman suodattimesi ja Matlabin filter –komennolla saatavaa tulosta
plot(filter(b,1,y)). Mistä johtuu suodatetun signaalin siirtyminen = viivästyminen? Kuinka pitkä viive on alkuperäiseen y signaaliin verrattuna (= montako näytettä)?