Jorin jutut / Matlab

Pikainen tutustumiskierros Matlab-ohjelmaan

Tällä sivulla olevat esimerkit esittelevät Matlabin tärkeimmät ominaisuudet hyvin lyhyesti. Tarkoitus ei ole kertoa miten jotain tehdään, vaan mitä Matlabilla ainakin on mahdollista tehdä.

Matlabin käynnistys onnistuu yleensä Käynnistä-valikon kohdasta Ohjelmat/Matlab.

Peruslaskutoimukset

Matlab tulostaa » -merkin tiedoksi siitä, että on valmis toimimaan. Kokeillaan ensimmäisenä peruslaskutoimituksia. Kirjoita mallin mukaan, mutta älä vahingossa kopioi ruudulta myös » -merkkiä.

» 1+2*3
ans =
     7

» 4.5/3
ans =
    1.5000

» (3+4i)*(2-2i)
ans =
  14.0000 + 2.0000i

» 4^3^2
ans =
        4096

Kertomerkkinä on tähti. Desimaaliluvuissa käytetään pistettä. Kompleksiluvut esitetään normaaliin tapaan muodossa (A+Bi). Potenssilaskun merkkinä on ^. Potenssilaskut lasketaan oikealta vasemmalle. Laskujärjestyksen määräämiseen käytetään tarvittaessa sulkeita.

Matriisilaskentaa

Seuraavaksi katsotaan matriisioperaatioita. Kokeile vaikka tällaista:

» a=[7 5 ; 3 2]
a =
     7     5
     3     2

» inv(a)
ans =
   -2.0000    5.0000
    3.0000   -7.0000

» a*a
ans =
    64    45
    27    19

Vektori annetaan matlabille luettelemalla hakasulkeiden sisällä alkiot välilyönnillä erotettuna. Matriisi kirjoitetaan myös hakasulkeiden sisällä, rivit erotetaan toisistaan puolipisteellä. Matlab itse tulostaa matriisin tavallisessa muodossa rivi kerrallaan. Matriisin, samoin kuin pelkän luvunkin, voi antaa muuttujan arvoksi = -merkillä.

Matlabin tuntemat skalaarifunktiot voidaan suorittaa yhdellä komennolla kokonaiselle vektorille. Tarvittaessa voidaan myös tehdä jokin peruslaskutoimitus matriisien tai vektorien vastinalkioille. Jatketaanpa:

» a=[1.1 1.2 1.3];

» sin(a)
ans =
    0.8912    0.9320    0.9636

» a .* sin(a)
ans =
    0.9803    1.1184    1.2526

Vektorin a määrittelyn jälkeen oli puolipiste. Se tarkoittaa, että tulosta ei haluta nähdä. Seuraavaksi laskettiin sini kaikille kolmelle alkiolle. Viimeisenä laskettiin matriisin a alkioiden ja alkioiden sinien tulo jokaiselle vastinalkioparille erikseen. Tämä tapahtui laittamalla kertomerkin eteen piste. Ilman pistettä Matlab olisi tulkinnut laskun tarkoittavan kahden 1x3 -muotoisen matriisin tuloa. (Josta seuraisi virheilmoitus, koska matriisien muoto ei täsmää.)

Grafiikkaa

Pikasilmäyksenä grafiikkaan piirretään käyrä, joka voi kuvata vaikkapa jonkin yhdistyksen jäsenmäärää, sekä sinifunktion kuvaaja tietyllä välillä. Kokeile ensimmäisenä käskyä

plot([1987 1988 1990 1991], [130 135 132 144])

Tuloksen pitäisi olla tämän näköinen:

[kuvaaja]

Sinifunktiota piirrettäessä pitää ensin tehdä vektori, jonka alkiot jakautuvat tasaisesti jollekin lukuvälille. Tämä onnistuu näin:

» a=4:2:10
a =
     4     6     8    10

Annetaan siis kaksoispisteellä erotettuna ensimmäinen luku, askel ja viimeinen luku. Tämän jälkeen piirtäminen onnistuukin helposti:

» x=0:0.1:10; y=sin(x); plot(x,y)

Samalla esimerkistä näkee, miten käskyjä yhdistetään peräkkäin. Puolipisteellä estetään turhien välitulosten näyttäminen. Ensimmäinen komento luo vektorin x, jonka alkiot ovat väliltä 0..5. Toinen komento laskee alkioittain sinin, ja viimeisenä piirretään käyrä yhdistämällä vektorien vastinalkioiden muodostamat pisteparit.

Omia funktiota

Tutustumiskierroksen lopuksi vilkaistaan oman funktion tekemistä. Avaa valikosta
File / New / M-file.
Kirjoita seuraava määrittely:

function a=testi1(b)
a=2*b+1;

Tallenna funktio nimellä testi1. Nyt voit Matlabin pääikkunassa testata funktiotasi kutsumalla sitä kuten muitakin funktioita, siis vaikka testi1(3) . Matlabin funktiot voivat myös sisältää ehto- ja silmukkarakenteita. Esimerkin vuoksi tehdään paloittain määritelty funktio:

% Paloittain määritelty funktio
% testi2(x) = -x^2, kun x<0
% testi2(x) = x^2, kun x>=0
function y=testi2(x)
if (x<0)
   y=-x^2;
else
   y=x^2;
end

Esimerkki on sikäli huono, että se toimii vain yksittäisille luvuille. Parempi tapa esitellään myöhemmin.