1 BL40A0000 Säätötekniikan ja signaalinkäsittelyn matemaattiset ohjelmistot Luennot ja harjoitukset Katja Hynynen, h. 6431, p. 040-548 8954 Katja.Hynynen@lut.fi Opetus ja suoritusvaatimukset OPETUS: Luentoja 7h, mikroharjoituksia 7h, intensiiviviikko Luennot ja harjoitukset mikroluokassa 6428 SUORITUSVAATIMUKSET: Hyväksytysti suoritetut PC-harjoitustyöt (2 kpl). 1. Harjoitustyö ( Signaalinkäsittely ) 2. Harjoitustyö ( Säätötekniikka+Simulink ) Harjoitustöiden jako keskiviikkona 19.10.2011 Palautus viimeistään lauantaina 31.12.2011. BL40A0000 SSKMO KH 2
2 Kurssin sisältöä 1 Kurssin ja Matlabin yleisesittely itt l 2 Matlabin perusteet 2.1 Skalaari-, vektori- ja matriisiarvoiset muuttujat 2.2 Peruskomennot ja -funktiot 2.3 Grafiikka 2.4 Makrot ja m-filet 2.5 Omien funktioiden luominen BL40A0000 SSKMO KH 3 Kurssin sisältöä 3 Matlabin laajennusosat eli toolboxit 3.1 Yleistä 3.2 Signal processing toolbox 3.3 Control system toolbox 4 Simulink 4.1 Perusteet 4.2 S-funktiot BL40A0000 SSKMO KH 4
3 Matlabin yleisesittely Lähde: Simo K. Kivelä, Matemaattiset ohjelmistot, TKK:lla 5-6.8.1997 pidetyn MAOL:n kurssin materiaalia, 10 s.» Syntynyt t 1980-luvun alussa silloisten i suurtietokoneiden t id ohjelmaksi» Kirjoitettu alunperin FORTRANilla numeerisen matriisilaskennan tutkimukseen (MATrix LABoratory)» Jaettiin vapaasti yliopistokäyttöön» Uusi kaupallistettu versio kirjoitettiin 1980-luvun puolivälissä C-kielellä» Jakelu ja kehitys The MathWorks Inc. (www.mathworks.com)» Mukaan runsaasti numeerisia rutiineja (mm. numeerinen integrointi) ja grafiikkaa => ei enää pelkkä matriisilaboratorio» Ohjelma on jatkanut kehittymistään ja siihen on lisätty Toolboxeiksi kutsuttuja lisäpaketteja, jotka ovat Matlabin omalla ohjelmointikielellä kirjoitettuja eri aloille soveltuvia lisäyksiä. Mukaan tullut myös symbolisen laskennan paketti, joka perustuu Maple-ohjelman algoritmeihin. BL40A0000 SSKMO KH 5 Matlabin yleisesittely» Nykyisin y Matlab saatavissa erittäin moniin eri ympäristöihin: PC (Win, Linux), MAC, Unix, Cray-supertietokone» Uusin versio on 1.9.2011 julkistettu 7.13 (Release 2011b). (http://www.mathworks.com/products/new_products/latest_features.html)» Matlab on ensisijaisesti numeerinen ohjelma, jonka laskentatarkkuus on noin 16 numeroa» Matriisilaskennan, yhtälöiden ja yhtälöryhmien sekä differentiaaliyhtälöiden (alkuarvoprobleemojen) numeeriseen ratkaisemiseen on runsas määrä valmiita rutiineja» Erinomaiset graafiset ominaisuudet (mm. 2D ja 3D esitykset)» Käyttäjä voi ohjelmoida haluamiaan lisäominaisuuksia => käyttäjät ovat rakentaneet opetus- ja opiskelupaketteja Matlabin varaan» Valtavasti Matlabia käsittelevää kirjallisuutta, tehtäväkokoelmia ja muuta materiaalia julkaistu, http://www.mathworks.com/support/books/ BL40A0000 SSKMO KH 6
4 Kirjallisuutta ja linkkejä Kurssin aihepiiristä on julkaistu runsaasti materiaalia, jota jokainen voi hankkia ja/tai käyttää. Lisäksi Matlabin oma dokumentaatio on jo itsessään erinomaista materiaalia. Seuraavassa muutamia hyviä kirjallisuusviitteitä ja linkkejä, joita on käytetty luentoja ja harjoitustehtäviä valmisteltaessa. 1. Lasse Eriksson et al.: Matlab 7 - perusteet ja sovellukset, Otatieto, 2004, 126 s. 2. Ohjeita Matlabin käyttöön. Juha Haataja (toim.). CSC - Tieteellinen laskenta Oy, 2000. www-osoite: http://extras.csc.fi/math/matlab/matlabohje.pdf 3. Esa Lammi et al: Matemaattiset ohjelmistot, CSC - Tieteellinen laskenta Oy, 2004, 4. painos, 105 sivua. www-osoite: http://www.csc.fi/csc/julkaisut/oppaat/pdfs/mat.ohj.pdf BL40A0000 SSKMO KH 7 Kirjallisuutta ja linkkejä 4. MathWorks Inc. kotisivut: http://www.mathworks.com 5. W. C. Messner, D. M. Tilbury: Control Tutorials For Matlab And Simulink : A Web-Based Approach. User s guide. Addison-Wesley. 6. Edellisen suppeampi versio löytyy internetistä osoitteesta: http://www.engin.umich.edu/group/ctm/ BL40A0000 SSKMO KH 8
5 Käynnistys ja lopetus Matlab käynnistetään yleensä joko kaksoisnäpäyttämällä ikonista (Win) tai komentoikkunasta komennolla matlab (Unix, Linux). Käynnistyksen yhteydessä ajetaan käynnistystiedosto matlabrc.m sekä startup.m, mikäli tällainen löytyy käyttäjän työhakemistosta. Henkilökohtaisen käynnistystiedoston startup.m avulla voi tehdä omia määrittelyjä (esim. asettaa kuvaajatekstien oletusfontin ja koon). Jouhevaa käyttöä varten kannattaa käyttäjän omien Matlab-tiedostojen hakemisto liittää Matlabin polkumäärittelyyn. Voimassaolevat Matlab-polku ja työhakemisto nähdään komennoilla path ja pwd. Polkuun voidaan liittää uusi hakemisto joko File -> Set path valikosta tai komennolla path( c:\hakemisto,path) ja haluttuun hakemistoon siirrytään komennolla cd( c:\hakemisto ) BL40A0000 SSKMO KH 9 Käynnistys ja lopetus Käynnistyttyään Matlab avaa komentoikkunan, tulostaa tähän mahdollisesti jotain esim. ylläpidon määrittelemiä ilmoituksia sekä kehoitteensa» jonka perään käyttäjä kirjoittaa haluamansa komennot ja funktiokutsut sekä vahvistaa ne painamalla Enter. Matlab lopetetaan joko valikosta tai kirjoittamalla quit tai exit. Laskennan katkaisuun voi käyttää ctrl+c. Tärkeän osan Matlabin kanssa työskentelystä muodostaa ohjelman oma sisäinen avustusjärjestelmä johon pääsee komennoilla help ja helpdesk. Esim. funktiosta funktio saat tietoja komennolla help funktio. BL40A0000 SSKMO KH 10
6 Työtila ja muuttujat Matlabin perustietorakenne on n-ulotteinen taulukko, jonka erikoistapauksia ovat matriisit, vektorit ja skalaarit. Lisäksi Matlabissa voi käyttää myös nk. rakenteisia muuttujia (struct), joiden alkioiden ei välttämättä tarvitse olla samaa tyyppiä. Rakenteisia muuttujia on solutaulukkoja ja rakennetaulukkoja. Muuttujat joko luodaan sijoituskäskyillä tai ne syntyvät aiempien muuttujien avulla tapahtuvan laskennan tai muiden operaatioiden tuloksena. Matlab tallettaa muuttujat työtilaan, joka on koneen keskusmuistissa. Muuttujat säilyvät siis vain kyseisen Matlab istunnon ajan ellei työtilaa tai muuttujia erikseen talleteta. Muuttujien nimissä saa olla 63 (19 ennen v6.5) kirjainta tai numeroa; nimen pitää alkaa kirjaimella. Matlab tekee eron ison ja pienten kirjainten välillä. BL40A0000 SSKMO KH 11 Työtila ja muuttujat ESIMERKKEJÄ:» x=7 x = 7» A=[1; 3] A = 1 3» B=[0.1 0.2 0.3; sin(pi/4) sin(pi/3) sin(pi/2)] B = 0.1000 0.2000 0.3000 0.7071 0.8660 1.0000» C=[2-i 0.5-j] C = 2.0000-1.0000i 0.5000-1.0000i BL40A0000 SSKMO KH 12
7 Työtila ja muuttujat ESIMERKKEJÄ:» teksti1='merkki'; teksti2='jono';» teksti3=[teksti1 teksti2] teksti3 = merkkijono Havaintoja esimerkeistä: Yhtäsuuruusmerkki = tarkoittaa sijoitusoperaatiota Vektoreita ja matriiseja muodostetaan käyttämällä hakasulkuja [ ] Taulukon alkiot voi erottaa toisistaan joko välilyönnillä tai pilkulla Puolipisteellä erotetaan matriisin rivit toisistaan. Puolipiste sijoituskäskyn lopussa estää tulostuksen näytölle. Imaginaariyksikkö on joko i tai j. BL40A0000 SSKMO KH 13 Työtila ja muuttujat Komennolla who saadaan luettelo työtilan muuttujista; komento whos tulostaa myös muuttujien koon ja tyypin. Uusimmissa Matlabeissa muuttujaluettelo löytyy myös vasemman yläkulman ikkunasta (Workspace).» whos Name Size Bytes Class A 2x1 16 double array B 2x3 48 double array C 1x2 32 double array (complex) teksti1 1x6 12 char array teksti2 1x4 8 char arrayay teksti3 1x10 20 char array x 1x1 8 double array Grand total is 31 elements using 144 bytes Muuttujan poistaminen tapahtuu komennolla clear muuttuja. Pelkkä clear tyhjentää koko työtilan. BL40A0000 SSKMO KH 14
8 Peruskomennot ja -funktiot Komentojen ja funktioiden avulla ohjataan Matlabin toimintaa ja operoidaan työtilan muuttujilla. Komennoilla vaikutetaan työympäristöön: asetetaan lukujen näyttötarkkuus, piirretään kuvaajia, talletetaan työtilan muuttujia, jne. Matlab tuntee suuren joukon matemaattisia perusfunktioita. Funktioilla on yksi tai useampia argumentteja jotka ovat joko työtilan muutujia tai vakioita. Funktio palautaa yhden tai useamman muuttujan, jotka talletetaan työtilaan. Funktioihin voidaan lukea myös peruslaskutoimitukset, jotka Matlabissa ovat seuraavat: + yhteenlasku vähennyslasku * kertolasku / jako oikealta \ jako vasem. ^ potenssiin korotus konjugaattitransponointi BL40A0000 SSKMO KH 15 Peruskomennot ja -funktiot Muista, että Matlab ymmärtää laskutoimitukset matriisialgebrallisina operaatioina. Jos operaatio ei ole määritelty saadaan virheilmoitus. Usein tarvitaan matriisin tai vektorin alkioidenvälisiä laskutoimituksia (taulukkooperaatiot) eli toimituksia, joissa vastaavilla paikoilla olevat alkiot operoivat keskenään. Yhteen- ja vähennyslaskun kohdalla ei eroa matriisi- ja taulukkooperaatioiden välillä luonnollisestikaan ole. Kerto- ja jakolaskun sekä potenssiinkorotuksen kohdalla taulukko-operaatiot saadaan lisäämällä piste laskutoimitusmerkin eteen:.* alkioittain kertolasku./ alkioittain jako oikealta.\ alkioittain jako vasemmalta.^ alkioittain potenssiin korotus BL40A0000 SSKMO KH 16
9 Peruskomennot ja -funktiot Matlabin tuntemat alkeisfunktiot ovat: sqrt(x) exp(x) log(x), log10(x) sin(x), cos(x), tan(x) sinh(x), cosh(x), tanh(x) asin(x), acos(x), atan(x) asinh(x), acosh(x), atanh(x) neliöjuuri e-kantainen eksponenttifunktio luonnol. ja 10-kant. logarimi trigonometriset funktiot hyberboliset funktiot trigonometriset käänteisfunktiot hyberboliset käänteisfunktiot Trigonometristen funktioiden ja käänteisfunktioiden argumentit annetaan aina radiaaneissa. BL40A0000 SSKMO KH 17 Peruskomennot ja -funktiot Funktiot on määritelty myös kompleksiluvuille. Jos argumentti on matriisi tai vektori funktio lasketaan alkioittain. Joillakin alkeisfunktioilla voi argumentti olla neliömatriisi, jolloin funktiota sovelletaan matriisilaskennan mielessä. Tällaisia funktioita ovat eksponenttifunktio, luonnollinen logaritmi ja neliöjuuri. Funktioiden niminä on kuitenkin käytettävä tällöin expm, logm, sqrtm. Muilla funktioilla matriisilaskenta on suoritettava apufunktion funm avulla. Muita usein tarvittavia standardifunktioiksi luettavia ovat: abs(x), sign(x), atan2(y,x), angle(z), real(z), imag(z), conj(z), round(x), fix(x), floor(x), ceil(x), max(x), min(x), sum(x), prod(x) Katso näistä ja muista funktioista sekä erikoisfunktioista lisää komennoilla help elfun, help specfun BL40A0000 SSKMO KH 18
10 Peruskomennot ja -funktiot Vakioita ja vakioiden kaltaisia symboleja ovat pi luvun π likiarvo exp(1) Neperin luku eps laskentatarkkuus Inf NaN not-a-number (saadaan esim. 0/0 tuloksena) Matlab tallettaa kaikki syötteet pinoon, jota voidaan selata nuolinäppäimillä ja. Tämän toiminnon avulla saman tai melkein saman komennon syöttäminen toistuvasti käy kätevästi. BL40A0000 SSKMO KH 19 Matriisien käsittelystä Matlab tarjoaa monipuoliset työkalut matriisien ja vektoreiden sekä niiden osien luomiseen ja käsittelyyn: ESIMERKKEJÄ: >> A1 = 0:0.5:1 A1 = 0 0.5000 1.0000 >> A2 = 2:0.5:3 A2 = 2.0000 2.5000 3.0000 >> A = [A1;A2] A = 0 0.5000 1.0000 2.0000 2.5000 3.0000 BL40A0000 SSKMO KH 20
11 Matriisien käsittelystä >> A(2,3) ans = 3 >> A(1,:) ans = 0 0.5000 1.0000 >> A(:,3) ans = 1 3 >> A(:) ans = 0 2.0000 0.5000 2.5000 1.0000 3.0000 BL40A0000 SSKMO KH 21 Matriisien käsittelystä Havaintoja esimerkeistä: Vektori, jonka perättäisillä alkioilla on vakioerotus, luodaan kaksoispisteen : avulla tyyliin alku:lisäys:loppu. Lisäys voi olla myös negatiivinen. Jos lisäystä ei ole määritelty sen oletetaan olevan 1. Samankokoisia vektoreita ja myös matriiseja voidaan yhdistää. Matriisin alkioihin viitataan tavanomaisesti: A(2,3) tarkoittaa matriisin A toisen rivin kolmannen sarakkeen alkiota. Kokonaiseen riviin tai sarakkeeseen viitataan kaksoispisteellä: A(1,:) ja A(:,3) tarkoittavat siis matriisin A ensimmäistä riviä (kaikki alkiot riviltä 1) ja kolmatta saraketta. Indeksien paikalla voi olla myös vektoreita, joiden alkiot tulkitaan indekseiksi. Komento A(:) muodostaa A-matriisin kaikista sarakkeista yhden pystyvektorin BL40A0000 SSKMO KH 22
Matriisien käsittelystä Yleisesti tarvittavia erikoismatriiseja, j, kuten yksikkömatriiseja, j, diagonaalimatriiseja, ykkös- tai nollamatriiseja sekä satunnaislukujen täyttämiä matriiseja voidaan luoda funktioilla eye, diag, ones, zeros, rand joille tyypillisesti annetaan argumentteina haluttavan matriisin dimensiot. ESIMERKKEJÄ: >> eye(2) >> ones(2) >> zeros(2) ans = ans = ans = 1 0 1 1 0 0 0 1 1 1 0 0 BL40A0000 SSKMO KH 23 Matriisien käsittelystä >> diag([1 2 3]) ans = 1 0 0 0 2 0 0 0 3 >> rand(2,4) ans = 0.9355 0.4103 0.0579 0.8132 0.9169 0.8936 0.3529 0.0099 Matriisilaskennan funktioita löytyy Matlabista paljon, kts. help matfun. BL40A0000 SSKMO KH 24 12