• Ei tuloksia

Ohjelman käynnistäminen Nämä ohjeet pätevät Tekniikan yksikön verkosta käynnistyvään

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Ohjelman käynnistäminen Nämä ohjeet pätevät Tekniikan yksikön verkosta käynnistyvään"

Copied!
10
0
0

Kokoteksti

(1)

>> why

Because he obeyed a good and young and smart and terrified and rich and rich and not very good and good and bald and not excessively tall and good programmer.

Tässä materiaali on tarkoitettu insinööriopiskelijoille Matlab- ohjelmoinnin opiskeluun. Missään oppaassa ei voi opettaa kaikkia asioita, ei tässäkään. Pyrkimys on ollut käydä läpi perusteellisemmin niitä asioita, jotka ovat osoittautuneet tarpeellisiksi vuosien

mittaan. Matlabin help on oikeasti hyödyllinen. Sitä kannattaa käyttää. Ja omaa mielikuvitusta.

Oulu 25.1.2008 Jukka Jauhiainen

Ohjelman käynnistäminen

Nämä ohjeet pätevät Tekniikan yksikön verkosta käynnistyvään Matlab7-versioon.

Ohjelmaa voi ajaa suoraan verkosta ilman minkäänlaisia asennuksia paikallisille koneille, joten se toimii (ainakin periaatteessa) missä tahansa Tekniikan yksikön verkkoon kytketystä koneesta.

Verkosta saattaa löytyä vanhempiakin versioita (kuten esim. Matlab6p), mutta ne eivät toimi !

Todennäköistä on, että Matlab ei löydy Windowsin START-valikosta tai työpöydältä. Yleensä se on käynnistettävä Windows Explorerin kautta klikkaamalla Tools -> Map Network Drive. Folderiksi valitaan

\\s\apps\kotka\matlab7

(2)

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. Niin kauan kuin vasemmanpuoleisessa ikkunassa on teksti "initializing", on lataus käynnissä.

Käyttöliittymä

Käynnistyksen jälkeen käytössä on kolme ikkunaa, joihin osaan voi valita eri toimintoja. Tärkein ikkuna on komentoikkuna (Command Window). Sinne käyttäjä voi kirjoittaa haluamiaan komentoja. Oheisessa esimerkissä on lisäksi Workspace- ikkuna, jossa näkyy sillä hetkellä käytössä olevat muuttujat. Muuttujaa

tuplaklikkaamalla 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/alas toimii komentoikkunassa. Muitakin ikkunoita on, ne on valittavissa yläpalkin view- napin takaa.

Yksittäisten komentojen lisäksi on mahdollista kirjoittaa hyvinkin monimutkaisia komentosarjoja tiedostoihin (ns. M-tiedostot). Näin tehtyjä uusia funktioita voidaan käyttää kuin mitä tahansa Matlabin sisäänrakennettuja valmisfunktioita.

(3)

Taustaa

Nimi "matlab" tulee sanoista Matrix Laboratory. Matlab on siis suunniteltu

ensisijaisesti matriisilaskentaan. Tämän ei pidä antaa pelottaa vaikka matriisin käsite olisikin outo. Vektori 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.

Matlab on tulkkaava ohjelmointikieli, eli se lukee rivi riviltä käyttäjän antamat komennot ja suorittaa niitä sitä mukaa. Virhetilanteessa ohjelman suoritus keskeytyy virheilmoitukseen. Tulkkavuudesta johtuu, että ohjelmien suoritus on hidasta

verrattuna "oikeisiin" kääntäviin ohjelmointikieliin (esim. C)..

Matlabin suosio perustuu pitkälti siihen, että siihen on saatavissa lukuisa

laajennusosia, 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 kirjoittaa komentoriville komentoja help, helpwin, info ja demo.

Tehtävä: Mitä komennot whos, cd, pwd ja clear tekevät ?

(4)

Muuttujat ja peruslaskutoimitukset

Yksinkertaiselle muuttujalle voidaan sijoittaa arvo samanlaisella sijoituslauseella kuin ohjelmoinnissa. Esimerkiksi sijoitus

>>a=1

määrittelee muuttujan a, jolle annetaan arvoksi 1. Muuttujien arvot näkyvät Workspace-ikkunassa ja ne voidaan tulostaa myös kirjoittamalla muuttujan nimi komentoriville ja painamalla ENTER.

Peruslaskutoimitukset suoritetaan +, -, * ja /-operaattoreilla. Esimerkiksi komento a=a+1 lisää muuttujan a arvoon 1. Vastaavasti c=a-b laskee muuttujien a ja b erotuksen ja tallentaa tuloksen muuttujaan c.

Tehtävä 3: Määrittele muuttujat a ja b, anna niille vaikkapa arvot 3 ja 2 ja kokeile peruslaskutoimituksia niillä.

Rivin lopussa oleva puolipiste (;) estää tulostuksen näytölle. Tämä voi olla tarpeen jos tulostusta on paljon. Puolipiste ei toimi Matlabissa samalla tavalla kuin C:ssä. Se ei ole pakollinen rivin lopussa, mutta jos samalle komentoriville kirjoittaa useamman komennon, toimii puolipiste komentojen erottimena. Esimerkiksi

>>a=1

>>b=2

>>a+b on sama asia kuin

>>a=1;b=2;a+b

Tulostaa summan ans-nimiseen muuttujaan tallennettuna. Ans sisältää aina

viimeisimmän komennon tulostuksen. Jos tulos halutaan tallentaa pysyvämmin , se kannattaa sijoittaa johonkin toiseen muuttujaan, esim.

>>c=a+b

Valmisfunktioita

Matlabissa on joukko sisäänrakennettuja matemaattisia funktioita, joista tavallisimpia ovat:

• sqrt(x) = luvun x neliöjuuri

• x^n = luvun x n:s potenssi

• exp(n) = en

(5)

• log(n) = luonnollinen logaritmi luvusta n

• log10(n) = 10-kantainen logaritmi luvusta n

• sin(x), cos(x), tan(x) = trigonometriset funktiot, argumentti oltava radiaaneina

• asin(x), acos(x), atan(x) = trigonometriset käänteisfunktiot.

Kompleksiluvut

Kompleksiluku määritellään kirjoittamalla reaali- ja imaginääriosat summamuodossa.

Matlab tunnistaa sekä i:n että j:n imaginääriyksiköksi.

>> z=3+4i

Tehtävä: Kokeile korottaa pelkkä vakio i tai j toiseen potenssiin. Mikä on tulos ? Kompleksilukuihin liittyviä funktioita:

• Liittoluku: conj(z)

• Itseisarvo abs(z)

• Reaaliosa real(z)

• Imaginääriosa imag(z)

• Vaihekulma angle(z)

Tehtävä: Laske luvun z=3+4i liittoluku, itseisarvo, reaaliosa, imaginääriosa ja vaihekulma.

(6)

Yksiulotteiset vektorit

Vektori on taulukko, jossa on lukuja peräkkäin. Matlabissa taulukkojen indeksointi alkaa 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 ja vika on viimeinen alkio. Askeleen voi jättää pois, jolloin oletus on 1.

Vektorin tiettyyn alkioon viitataan antamalla vektorin nimi ja sen perään suluissa numero, 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ällön voi tarkistaa kirjoittamalla komentoikkunaan x, tai tuplaklikkaamalla sitä Workspacessa (sen pitäisi ilmestyä sinne tuon komennon jälkeen). Tulostetaan seuraavaksi x:n 1. alkio

:

>>x(1) ans = 0

Ellei jonkin operaation tulosta sijoiteta johonkin muuttujaan, Matlab sijoittaa sen automaattisesti muuttujaan ans. Se siis sisältää aina viimeisimmän laskutoimituksen tuloksen. Vastaavasti komento

>>a=x(1)

sijoittaa x:n ensimmäisen alkion arvon muuttujaan a (joka ilmestyy Workspaceen).

Katsotaan seuraavaksi, mitä x:n 10 ensimmäistä alkiota ovat:

>>x(1:10) ans =

Columns 1 through 7

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000

(7)

Columns 8 through 10

0.7000 0.8000 0.9000

Vektorin alkioihin voidaan myös sijoittaa arvoja. Esimerkiksi tässä asetetaan vektorin x 10 ensimmäiseen alkioon 0:

>>x(1:10)=0;

Pysty- ja vaakavektorit

Matlabissa vektori voidaan esittää joko pysty- tai vaakavektorina. Oletusarvona Matlab tekee vaakavektorin. Sen voi muuttaa pystyvektoriksi eli transponoida komennolla x’:

>> x=[1:3]

x =

1 2 3

>> x' ans = 1 2 3

Tehtävä: Tee vektori x, joka sisältää kokonaisluvut 1 - 5 ja vektori y, joka sisältää luvut 6 –10. Kokeile yhteen-, vähennys, kerto- ja jakolaskuja. Mitä tapahtui ? Summa ja erotus on määritelty matemaattisesti vektoreille siten, että operaatio

kohdistuu vektorien vastinalkioihin. Sen sijaan tulon ja osamäärän tapauksessa Matlab pyrkii laskemaan aina matriisitulon.

Tehtävä: Selitä, mitäseuraavat operaatiot tekevät:

x*y’

x’*y

Vastinalkioiden kerto- ja jakolasku on toki myös mahdollista. Se määritellään laittamalla operaattorin eteen PISTE. Siis esimerkiksi x.*y.

Tehtävä: Laske vektorien x ja y alkioittainen tulo ja osamäärä.

Tehtävä: Tee Matlabilla vektorit, jossa on alkiot a)2, 4, 6, 8, ..., 20

b)10, 8, 6, 4, 2, 0, -2, -4, ..., -10 c)1, 1/2, 1/3, 1/4, 1/5, ..., 1/10 d)0, 1/2, 2/3, 3/4, 4/5, ..., 9/10

Matriisit

Matriisi on kaksiulotteinen taulukko. Matriisin alkiot annetaan hakasulkujen sisällä rivi kerrallaan puolipisteillä erotettuna.

(8)

Esimerkki:

a=[1 2 3; 4 5 6; 7 8 9]

a =

1 2 3 4 5 6 7 8 9

>> a' ans = 1 4 7 2 5 8 3 6 9

Matriisin transponointi siis kääntää rivit sarakkeiksi ja päinvastoin.

Peruslaskutoimituksiin matriiseilla pätevät samat periaatteet kuin edellä vektoreihin.

Summa ja erotus on siten määritelty vain kahden samankokoisen matriisin kesken vastinalkioiden välillä. Matriisin a käänteismatriisi voidaan laskea komennolla inv(a).

Tehtävä: Käytä edellä määriteltyä matriisia a. Tee myös vaakavektori b, joka sisältää luvut 1, 2 ja 3. Mitä laskutoimituksia a:n ja b:n välillä voi tehdä ?

Tehtävä: Matlabissa 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 oltava positiivinen kokonaisluku.

Lineaarisen yhtälöryhmän ratkaiseminen

Lineaarinen yhtälöryhmä ratkeaa MATLABin takakeno-operaatiolla. Jos yhtälöitä on enemmän kuin tuntemattomia (kerroinmatriisin aste on pienempi kuin tuntemattomien lukumäärä) saadaan pienimmän neliösumman ratkaisu.

Yhtälöryhmä 10x1-7x2 = 7 -3x1+2x2+6x3 = 4 5x1-x2+5x3 = 6

voidaan esittää matriisimuodossa Ax=b. MATLABissa muodostetaan ratkaisua varten kerroinmatriisi A ja oikean puolen vektori b:

» A=[10,-7,0;-3,2,6;5,-1,5]

A =

10 -7 0 -3 2 6 5 -1 5

» b=[7,4,6]' b =

7 4 6

(9)

Yhtälöryhmä ratkeaa takakenolla

» x=A\b x = 0 -1 1

Tehtävä: Ratkaise Matlabilla yhtälöryhmä x1 + x2 + x3 = 10

0.45x1 + 0.55x2 + 0.7x3 = 6.45 0.35x1 + 0.3x2 + 0.2x3 = 2.35

Tehtävä: Maalifirmalla on ylijäämä neljää erilaista vihreän sävyn maalia, joissa on neljää pigmenttiä prosentteina seuraavasti:

Maali 1 Maali 2 Maali 3 Maali 4 Pigmentti 1 80 0 30 10 Pigmentti 2 0 80 10 10 Pigmentti 3 16 20 60 72 Pigmentti 4 4 0 0 8

Nämä maalit halutaan sekoittaa niin, että saadaan muodikkaampaa väriä, jossa pigmenttejä on suhteessa 40:27:31:2. Missä suhteessa maalit on sekoitettava?

Muodosta ongelman ratkaiseva yhtälöryhmä ja ratkaise se Matlabilla.

Muita matriisilaskentaan liittyviä toimintoja

Suuri joukko valmiita matriisifunktioita on käytettävissä. Esimerkiksi matriisin determinantti lasketaan funktion det avulla:

» det(a)

ans =

27 käänteismatriisi, inv

» inv(a)

ans =

-1.7778 0.8889 -0.1111 1.5556 -0.7778 0.2222 -0.1111 0.2222 -0.1111 matriisin aste, ominaisarvot jne.

» rank(a)

ans = 3

(10)

ans =

-0.3884 12.1229 -5.7345

Viittaukset

LIITTYVÄT TIEDOSTOT

Anna vastaus samassa muodossa kuin muuttujien arvot on

(Mikroluokassa on tällä hetkellä käytettävissä SAS 9.1, luennoitsijan kannettavassa SAS 9.2) Ohjelmakoodin avaaminen onnistuu tietenkin myös SAS-ohjelmistosta:6. Mutta missä

Ohjelman tehtävä ja ratkaisu kuvataan käyttäen vasemmalla olevia väliotsikoita. Ohjelman avulla voidaan laskea usean eri vedenlaatumuuttujan arvot. Tärkeimmät muuttujat

sitä, että yksikkö lisää vuoden 2007 tasossa Raahen seudun kokonaistuotantoa (BKT) eli talouskasvua lähes prosentilla, kun toiminnan kerroinvaikutukset huo- mioidaan, joten

Lopuksi ohjelman pitää tulostaa molempien vakuutusten tiedot (omistajan nimi, vakuuksen perusmaksu, bonus ja tieto siitä, onko vakuutus voimassa). Voit päättää

Esimerkiksi seuraava käsky avaa tiedoston, jonka nimi on tekstia.txt lukemista varten niin, että ohjelmassa tiedostoa voidaan käsitellä muuttujan lahtotiedosto avulla:.. lahtotiedosto

Esimerkiksi seuraava käsky avaa tiedoston, jonka nimi on tekstia.txt lukemista varten niin, että ohjelmassa tiedostoa voidaan käsitellä muuttujan lahtotiedosto avulla:.. lahtotiedosto

Ekokemin tavoitteena on suunnitellun käsitellyn puun uudelleenkäyttö- ja esikäsittely- yksikön toiminnan käynnistäminen nykyisen Mäntyluodon yksikkönsä yhteyteen vuoden