Matlab exercise 1 - Tekniikan yksikkö - Oamk
Matlab exercise 1 - Tekniikan yksikkö - Oamk
Matlab exercise 1 - Tekniikan yksikkö - Oamk
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Matlab</strong>-perusteetJukka JauhiainenOAMK / <strong>Tekniikan</strong> yksikköHyvinvointiteknologian koulutusohjelmaTämän materiaalin tarkoitus on antaa opiskelijalle lyhyehkö johdanto <strong>Matlab</strong>ohjelmistonperusteisiin. <strong>Matlab</strong>in opiskeluun käytössä oleva tuntimäärä on hyvinrajallinen, joten tästä materiaalista on pyritty tekemään sellainen, että perusteet voiopiskella itsenäisestikin. Tarkoitus on keskittyä sellaisiin asioihin, joihin opiskelujenvarrella monesti törmää. Moniin matemaattisiin ongelmiin <strong>Matlab</strong> on varsinhyödyllinen työkalu. Sen takia sen käyttöä opiskellaan Signaaliteorian kurssilla.Ohjelman käynnistäminenNämä ohjeet pätevät <strong>Tekniikan</strong> yksikön verkosta käynnistyvään <strong>Matlab</strong>6p5-versioon.Ohjelmaa voi ajaa suoraan verkosta ilman minkäänlaisia asennuksia paikallisillekoneille, joten se toimii (ainakin periaatteessa) missä tahansa <strong>Tekniikan</strong> yksikönverkkoon kytketystä koneesta.Verkosta saattaa löytyä vanhempiakin versioita (kuten esim. <strong>Matlab</strong>6p), mutta neeivät toimi !Todennäköistä on, että <strong>Matlab</strong> ei löydy Windowsin START-valikosta tai työpöydältä.Yleensä se on käynnistettävä Windows Explorerin kautta klikkaamalla Tools -> MapNetwork Drive. Folderiksi valitaan\\s\apps\kotka\matlab6p5
Kyseisestä hakemistosta löytyy ikoni, jota tuplaklikkaamalla ohjelma käynnistyy.Joskus ohjelma ei käynnisty, vaan ruutuun ilmestyy "Licence Manager Error". Tässätilanteessa ota yhteys ATK-tukeen (ensisijaisesti Pekka Hämäläinen).Käynnistyminen saattaa kestää verkon yli jonkin aikaa, joten ole kärsivällinen. Niinkauan kuin vasemmanpuoleisessa ikkunassa on teksti "initializing", on latauskäynnissä.KäyttöliittymäKäynnistyksen jälkeen käytössä on kolme ikkunaa, joihin osaan voi valita eritoimintoja. Tärkein ikkuna on komentoikkuna (Command Window). Sinne käyttäjävoi kirjoittaa haluamiaan komentoja. Oheisessa esimerkissä on lisäksi Workspaceikkuna,jossa näkyy sillä hetkellä käytössä olevat muuttujat. Muuttujaatuplaklikkaamalla saa näyttöön Excel-tyylisen taulukon, jossa näkyy muuttujan arvot.Kolmas esimerkin ikkuna on Command History, jossa näkyy lista edellisistäkomennoista. Ne voi toistaa tuplaklikillä. Myös unix-maailmasta tuttu nuoli ylös/alastoimii komentoikkunassa. Muitakin ikkunoita on, ne on valittavissa yläpalkin viewnapintakaa.Yksittäisten komentojen lisäksi on mahdollista kirjoittaa hyvinkin monimutkaisiakomentosarjoja tiedostoihin (ns. M-tiedostot). Näin tehtyjä uusia funktioita voidaankäyttää kuin mitä tahansa <strong>Matlab</strong>in sisäänrakennettuja valmisfunktioita.
YleistäNimi "matlab" tulee sanoista Matrix Laboratory. <strong>Matlab</strong> on siis suunniteltuensisijaisesti matriisilaskentaan. Tämän ei pidä antaa pelottaa vaikka matriisin käsiteolisikin päässyt unohtumaan. Vektorihan on yksiulotteinen (eli 1xn tai nx1) matriisi.Yksittäinen luku (eli skalaari) voidaan ajatella 1x1-matriisiksi. Esimerkiksi 3x3-matriisi on joukko lukuja, jotka on järjestetty 3 riviksi ja 3 sarakkeeksi.<strong>Matlab</strong> on tulkkaava ohjelmointikieli, eli se lukee rivi riviltä käyttäjän antamatkomennot ja suorittaa niitä sitä mukaa. Virhetilanteessa ohjelman suoritus keskeytyyvirheilmoitukseen. Tulkkavuudesta johtuu, että ohjelmien suoritus on hidastaverrattuna "oikeisiin" kääntäviin ohjelmointikieliin (esim. C)..<strong>Matlab</strong>in suosio perustuu pitkälti siihen, että siihen on saatavissa lukuisalaajennusosia, Toolboxeja, joiden ansiosta kaikkea ei tarvitse koodata itse alusta asti.Toolboxeja on saatavissa mm. signaalinkäsittelyyn, kuvankäsittelyyn, optimointiin,systeemisuunnitteluun jne. Niitä tulee myös koko ajan lisää.Tehtävä: Käy ohjelman tekijän MathWorks Inc:n kotisivulla. Kokeile kirjoittaakomentoriville komentoja help, helpwin, info ja demo.Tehtävä: Mitä komennot whos, cd, pwd ja clear tekevät ?
Muutamia perusjuttujaMuuttujat ja peruslaskutoimituksetMäärittele muuttujat a ja b, anna niille vaikkapa arvot 1 ja 2 ja kokeileperuslaskutoimituksia niillä:>>a+b>>a-b>>a*b>>a/b>>a\b>>a^bRivin lopussa oleva puolipiste (;) estää tulostuksen näytölle. Tämä voi olla tarpeen jostulostusta on paljon. Huomaa, että koska <strong>Matlab</strong> on suunniteltu matriisilaskentaan, onjakolasku hieman mutkikkaampi kuin ”tavallisissa” ohjelmointikielissä. Miten edelläoperaatioiden a/b ja a\b tulos on selitettävissä ?KompleksiluvutSitten hieman kompleksilukuja. Määrittele luku z=1-2i ja selvitä, miten saatkompleksiluvun reaali- ja imaginääriosan, itseisarvon ja vaihekulman.Yksiulotteiset vektoritVektori on taulukko, jossa on lukuja peräkkäin. <strong>Matlab</strong>issa taulukkojen indeksointialkaa aina YKKÖSESTÄ, ei nollasta kuten esimerkiksi C:ssä.Vektori voidaan määritellä komennolla:>>x=[eka:askel:vika];missä eka on vektorin ensimmäinen alkio, askel sanoo paljonko arvoa kasvatetaan javika on viimeinen alkio. Askeleen voi jättää pois, jolloin oletus on 1.Vektorin tiettyyn alkioon viitataan antamalla vektorin nimi ja sen perään suluissanumero, joka kertoo, monenteenko alkioon viitataan. Siis>>x(n)Tulostaa vektorin x n:nnen alkion. Kaksoispisteen avulla voidaan määritellätulostettavaksi joukko peräkkäisiä alkioita:>>x(n1:n2)Tulostaa vektorin sisällön alkaen indeksistä n1 ja päättyen indeksiin n2.Esimerkki: Tehdään vektori x, joka saa arvot 0:sta 10:een 0.1 välein.>>x=[0:0.1:10];x:n sisäl lön voi tarkistaa kirjoittamalla komentoikkunaan x, taituplaklikkaamalla sitä Workspacessa (sen pitäisi ilmestyä sinne tuonkomennon jälkeen). Tulostetaan seuraavaksi x:n 1. alkio:
x(1)ans =0Ellei jonkin operaation tulosta sijoiteta johonkin muuttujaan, <strong>Matlab</strong> sijoittaasen automaattisesti muuttujaan ans. Se siis sisältää aina viimeisimmänlaskutoimituksen tuloksen. Vastaavasti komento>>a=x(1)sijoittaa x:n ensimmäisen alkion arvon muuttujaan a (joka ilmestyyWorkspaceen). Katsotaan seuraavaksi, mitä x:n 10 ensimmäistä alkiota ovat:>>x(1:10)ans =Columns 1 through 70 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000Columns 8 through 100.7000 0.8000 0.9000Vektorin alkioihin voidaan myös sijoittaa arvoja. Esimerkiksi tässä asetetaanvektorin x 10 ensimmäiseen alkioon 0:>>x(1:10)=0;Pysty- ja vaakavektorit<strong>Matlab</strong>issa vektori voidaan esittää joko pysty- tai vaakavektorina. Oletusarvona<strong>Matlab</strong> tekee vaakavektorin. Sen voi muuttaa pystyvektoriksi eli transponoidakomennolla x’:>> x=[1:3]x =1 2 3>> x'ans =123Tehtävä: Tee vektori x, joka sisältää kokonaisluvut 1 - 5 ja vektori y, jokasisältää luvut 6 –10. Kokeile yhteen-, vähennys, kerto- ja jakolaskuja. Mitätapahtui ?
Summa ja erotus on määritelty matemaattisesti vektoreille siten, että operaatiokohdistuu vektorien vastinalkioihin. Sen sijaan tulon ja osamäärän tapauksessa <strong>Matlab</strong>pyrkii laskemaan aina matriisitulon.Tehtävä: Selitä, mitä seuraavat operaatiot tekevät:x*y’x’*yVastinalkioiden kerto- ja jakolasku on toki myös mahdollista. Se määritelläänlaittamalla operaattorin eteen PISTE. Siis esumerkiksi x.*y.Tehtävä: Laske vektorien x ja y alkioittainen tulo ja osamäärä.MatriisitMatriisi on kaksiulotteinen taulukko (vektori). Matriisin alkiot annetaan hakasulkujensisällä rivi kerrallaan puolipisteillä erotettuna.Esimerkki:a=[1 2 3; 4 5 6; 7 8 9]a =1 2 34 5 67 8 9>> a'ans =1 4 72 5 83 6 9Matriisin transponointi siis kääntää rivit sarakkeiksi ja päinvastoin.Peruslaskutoimituksiin matriiseilla pätee samat periaatteet kuin edellä vektoreihin.Summa ja erotus on siten määritelty vain kahden samankokoisen matriisin kesken.Matriisin a käänteismatriisi voidaan laskea komennolla inv(a).Tehtävä: Käytä edellä määriteltyä matriisia a. Tee myös vaakavektori b, jokasisältää luvut 1, 2 ja 3. Mitä laskutoimituksia a:n ja b:n välillä voi tehdä ?Tehtävä: <strong>Matlab</strong>issa on valmiina joukko komentoja, joilla voidaan tehdätiettyjä erikoismatriiseja. Tällaisia on esimerkiksi ones(n), zeros(n), eye(n),magic(n) jne. Mitä nämä komennot tekevät ? Kirjaimen n tilalla on oltavapositiivinen kokonaisluku.
Tehtävä: TST:ssä käytettiin tasavirtapiirien yhteydessä paljonsilmukkamenetelmää, jossa tuntemattomat silmukkavirrat saatiin matriisiyhtälöstä−1I = R ε . Ratkaise oheisen kytkennän silmukkavirrat <strong>Matlab</strong>ia käyttäen:10ΩA20Ω100V10Ω40VB