matemaattisia funktioita - oamkjjauhiai/opetus/sovellusohjelmat/matlab... · 2008. 1. 25. ·...

22
T211003 Sovellusohjelmat Matlab perusteet osa 2: Matemaattisia funktioita. Operaattorit. Vertailu- ja loogiset operaattorit OAMK Tekniikan yksikkö Hyvinvointiteknologia Copyright © Jukka Jauhiainen 2008 Matemaattisia funktioita Funktio Toiminta max(X) Vektorin X suurin luku. Matriiseille hakee suurimman luvun j jokaiselta matriisin sarakkeelta. max(X,[],DIM) DIM = 1 Laskee summan sarakkeilta (oletus, voi jättää pois) DIM = 2 Laskee summan riveiltä min(X) Vektorin X pienin luku. Matriiseille hakee pienimmän luvun jokaiselta matriisin sarakkeelta min(X,[],DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) round(X) Pyöristys lähimpään kokonaislukuun ceil(X) Pyöristys kohti + ääretöntä floor(X) Pyöristys kohti - ääretöntä fix(X) Pyöristys kohti nollaa abs(X) Itseisarvo sum(X) Vektorin X alkioiden summa sum(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) cumsum(X) Vektorin X alkioiden kumulatiivinen summa cumsum(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) prod(X) Vektorin X alkioiden tulo prod(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) cumprod(X) Vektorin X alkioiden kumulatiivinen tulo cumprod(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) diff(X) Vektoreille [X(2)-X(1) X(3)-X(2) … X(n)-X(n-1)] Matriiseille [X(2:n,:) - X(1:n-1,:)] diff(X,N) N:n kertaluvun erotus diff(X,N,DIM) mean(X) Vektorin X alkioiden keskiarvo. Matriiseille laskee jokaisen sarakkeen keskiarvon. mean(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) median(X) Vektorin X alkioiden mediaani eli keskimmäinen luku lajitellusta lukujoukosta. Matriiseille laskee mediaanin jokaiselta sarakkeelta. mean(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2) std(X) Vektorin X keskihajonta. Matriiseille keskihajonta sarakkeittain. std(X,W,DIM) DIM = Lasketaanjoko sarakkeittain (1) tai riveittäin (2) W = 0 Käytetään normalisoinnissa kerrointa N-1 (oletus) W = 1 Käytetään normalisoinnissa kerrointa N

Upload: others

Post on 29-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Matemaattisia funktioita

    Funktio Toiminta

    max(X)

    Vektorin X suurin luku. Matriiseille hakee suurimman luvun j jokaiselta matriisin sarakkeelta.

    max(X,[],DIM) DIM = 1 Laskee summan sarakkeilta (oletus, voi jättää pois)

    DIM = 2 Laskee summan riveiltä

    min(X)

    Vektorin X pienin luku. Matriiseille hakee pienimmän luvun jokaiselta matriisin sarakkeelta

    min(X,[],DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    round(X) Pyöristys lähimpään kokonaislukuun

    ceil(X) Pyöristys kohti + ääretöntä

    floor(X) Pyöristys kohti - ääretöntä

    fix(X) Pyöristys kohti nollaa

    abs(X) Itseisarvo

    sum(X) Vektorin X alkioiden summa

    sum(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    cumsum(X) Vektorin X alkioiden kumulatiivinen summa

    cumsum(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    prod(X) Vektorin X alkioiden tulo

    prod(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    cumprod(X) Vektorin X alkioiden kumulatiivinen tulo

    cumprod(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    diff(X) Vektoreille [X(2)-X(1) X(3)-X(2) … X(n)-X(n-1)]

    Matriiseille [X(2:n,:) - X(1:n-1,:)]

    diff(X,N) N:n kertaluvun erotus

    diff(X,N,DIM)

    mean(X) Vektorin X alkioiden keskiarvo. Matriiseille laskee jokaisen sarakkeen keskiarvon.

    mean(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    median(X) Vektorin X alkioiden mediaani eli keskimmäinen luku lajitellusta lukujoukosta.

    Matriiseille laskee mediaanin jokaiselta sarakkeelta.

    mean(X,DIM) DIM = Lasketaan joko sarakkeittain (1) tai riveittäin (2)

    std(X) Vektorin X keskihajonta. Matriiseille keskihajonta sarakkeittain.

    std(X,W,DIM) DIM = Lasketaanjoko sarakkeittain (1) tai riveittäin (2)

    W = 0 Käytetään normalisoinnissa kerrointa N-1 (oletus)

    W = 1 Käytetään normalisoinnissa kerrointa N

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    var(X) Vektorin X varianssi (keskihajonnan neliö, ks. Syntaksi edellä)

    var(X,W,DIM)

    sort(X) Lajittelee vektorin X alkiot kasvavaan järjestykseen. Y =

    sort(X,DIM,MODE) DIM = Lajitellaan joko sarakkeittain (1) tai riveittäin (2)

    MODE = 'ascend', nousevaan järjestykseen

    MODE = 'descend' laskevaan järjestykseen

    Y = Lajiteltu vektori

    rand(N) NxN kokoinen matriisi satunnaislukuja väliltä (0.0, 1.0)

    rand(1,N) N alkion mittainen vaakavektori satunnaislukuja

    rand(M,N) MxN kokoinen matriisi satunnaislukuja

    rand (ilman argumentteja) Yksi satunnaisluku. Arvo vaihtuu joka kutsukerralla

    >> a=[3 4 2 5 9];

    >> sort(a)

    ans =

    2 3 4 5 9

    >> sort(a,'descend')

    ans =

    9 5 4 3 2

    >> mean(a)

    ans =

    4.6000

    >> median(a)

    ans =

    4

    >> cumsum(a)

    ans =

    3 7 9 14 23

    >> cumprod(a)

    ans =

    3 12 24 120 1080

    >> diff(a)

    ans =

    1 -2 3 4

    Tehtävä: Tee 4x4-kokoinen satunnaislukumatriisi X, joka sisältää kokonaislukuarvoja

    väliltä 0 – 100.

    Tehtävä: Laske edellisen tehtävän matriisin X alkioitten summa

    a) Riveittäin b) Sarakkeittain c) Koko matriisin alkioiden summa

    Tehtävä: Talletan matriisin X alkiot 16 alkion mittaiseen vaakavektoriin Y ja lajittele

    alkiot järjestykseen suurimmasta pienimpään.

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Tehtävä: Laske positiivisen kokonaisluvun n kertoma n!=1*2*3*4*..n

    Tietotyypit

    Matlabissa on käytössä seuraavat tietotyypit:

    double - double precision.

    char - character array (string).

    logical - logical (true / false, 0 / 1)

    cell - cell array.

    struct - struct data type

    class - class data type

    single - single precision.

    uint8 - 8-bit integer.

    uint16 - 16-bit integer.

    uint32 - unsigned 32-bit integer.

    uint64 - unsigned 64-bit integer.

    int8 - signed 8-bit integer.

    int16 - signed 16-bit integer.

    int32 - signed 32-bit integer.

    int64 - signed 64-bit integer. inline - INLINE object.

    function_handle - Function handle array.

    Perustietotyypit

    Numeerisen tiedon oletustyyppi on double. Kaksoistarkkuuden luvuilla laskeminen on

    hidasta. Kannattaa muuttaa data kokonaislukutyypiksi jos se on suinkin mahdollista,

    kuten esimerkiksi DSP-sovelluksissa. Toisaalta läheskään kaikki Matlabin funktiot eivät

    toimi kokonaislukutyypeille. Matlabissa muuttujan tyyppiä ei tarvitse määritellä kuten C-

    kielessä. Matlab toimii niin, että ns. komentotulkki tulkitsee käyttäjän syöttämät

    muuttujat oletustietotyyppeihin ja tunnistaa luvut sekä merkit. Esimerkki muunnoksesta

    (Matlabin kommenttimerkki on %):

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    >>%a on tyyppiä double

    >>a=1;

    >>%a on 8-bittinen etumerkitön kokonaisluku:

    >>a=uint8(a);

    >>sqrt(a)

    ??? Function 'sqrt' is not defined for values of class 'uint8'.

    Error in ==> sqrt at 13

    builtin('sqrt', varargin{:});

    Siis esimerkiksi neliöjuurta ei voi ottaa kokonaisluvusta.

    Merkkijonot

    Matlabin merkkijono on vektori, joka sisältää merkkejä:

    >> s='merkkijono'

    s =

    merkkijono

    Merkkijonojen käsittely

    Merkkijonojen käsittelyyn on käytössä komennot:

    String Manipulation

    deblank Strip trailing blanks from the end of a string

    findstr Find one string within another

    lower Convert string to lower case

    strcat String concatenation

    strcmp Compare strings

    strcmpi Compare strings ignoring case

    strjust Justify a character array

    strmatch Find possible matches for a string

    strncmp Compare the first n characters of two strings

    strrep String search and replace

    strtok First token in string

    strvcat Vertical concatenation of strings

    symvar Determine symbolic variables in an expression

    texlabel Produce the TeX format from a character string

    upper Convert string to upper case

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Muutama esimerkki:

    >> s='aku'

    s =

    aku

    >> q='ankka'

    q =

    ankka

    >> strcat(s,q)

    ans =

    akuankka

    >> p=strcat(s,q)

    p =

    akuankka

    >> strtok(p,'u')

    ans =

    ak

    >> findstr(p,'uan')

    ans =

    3

    >> strcmp(s,q)

    ans =

    0

    >> strrep(p,'aku','roope')

    ans =

    roopeankka

    >> strrep(p,'aku','roope')

    ans =

    roopeankka

    Merkkijonon muunnokset

    Merkkijono voidaan muuttaa numeeriseksi tiedoksi ja päinvastoin.

    String to Numeric

    base2dec Convert base N number string to decimal number

    bin2dec Convert binary number string to decimal number

    hex2dec Convert hexadecimal number string to decimal number

    hex2num Convert hexadecimal number string to double number

    str2double Convert string to double-precision number

    str2num Convert string to number

    Numeric to String

    char Convert to character array (string)

    dec2base Convert decimal to base N number in string

    dec2bin Convert decimal to binary number in string

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    dec2hex Convert decimal to hexadecimal number in string

    int2str Convert integer to string

    mat2str Convert a matrix to string

    num2str Convert number to string

    Muunnos merkkijonosta kaksoistarkkuuden liukuluvuksi:

    >> s='3.141592';

    >> whos

    Name Size Bytes Class

    s 1x8 16 char array

    Grand total is 8 elements using 16 bytes

    >> s=str2num(s)

    s =

    3.1416

    >> whos

    Name Size Bytes Class

    s 1x1 8 double array

    Grand total is 1 element using 8 bytes

    Komento whos näyttää sillä hetkellä käytössä olevien muuttujien nimet, koot ja

    tietotyypit. Sama tieto on näkyvillä Workspace-ikkunassa.

    Merkkijonon pituus voidaan määrittää komennoilla length tai size, jotka laskevat

    minkä tahansa vektorin pituuden.

    Tehtävä: Muuta piin likiarvo merkkijonoksi.käyttämällä Matlabin sisäistä vakiota pi ja

    määritä tuloksena saadun merkkijonon pituus.

    Tietue

    Tietue koostuu kentistä, joilla on tietty tyyppi ja arvo. Tietueen kenttiin viitataan

    pisteoperaattorilla (.).

    Luodaan kahden alkion mittainen tietuetaulukko s, joka sisältää kolme kenttää type,

    color ja x. type-kenttä voi saada arvot ’big’ ja ’little’. Kenttä color voi

    saada ainoastaan arvon ’red’. Kenttä x voi saada arvot 3 tai 4.

    s = struct('type',{'big','little'},'color',{'red'},'x',{3 4})

    Tulostuu: s =

    1x2 struct array with fields:

    type

    color

    x

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Tietuetaulukon alkioihin viitataan antamalla taulukon indeksi tavallisissa suluissa

    (samalla lailla kuin viitattiin vektorin alkioihin):

    >>s(1)

    ans =

    type: 'big'

    color: 'red'

    x: 3

    >>s(2)

    ans =

    type: 'little'

    color: 'red'

    x: 4

    Tietuetaulukkoon voidaan helposti lisätä uusia alkioita:

    >> s(3).type='tiny';s(3).color='blue';s(3).x=5;

    >> s(3)

    ans =

    type: 'tiny'

    color: 'blue'

    x: 5

    Matlab tukee versiosta 7 alkaen oliopohjaista ohjelmointia. Kieleen on lisätty

    luokkatyyppi class. Jätetään tämä kuitenkin tällä kurssilla käsittelemättä.

    Tehtävä: Toteuta oheisen kuvan mukainen tietue.

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Operaattorit

    Matlab sisältää seuraavat operaattorit. Huomaa, että kerto-, jako-, ja

    potenssiinkorotuksissa on määritelty erikseen operaattorit matriisioperaatioille ja

    alkioittaisille operaatioille.

    Arithmetic operators. plus - Plus + minus - Minus - mtimes - Matrix multiply * times - Array multiply .* mpower - Matrix power ^ power - Array power .^ mldivide - Backslash or left matrix divide \ mrdivide - Slash or right matrix divide / ldivide - Left array divide .\ rdivide - Right array divide ./ kron - Kronecker tensor product kron

    Relational operators. eq - Equal == ne - Not equal ~= lt - Less than < gt - Greater than > le - Less than or equal =

    Logical operators. and - Logical AND (for vectors) & or - Logical OR (for vectors) |

    and - Logical AND (for scalars) && or - Logical OR (for scalars) ||

    not - Logical NOT ~ xor - Logical EXCLUSIVE OR any - True if any element of vector is nonzero all - True if all elements of vector are nonzero

    Vertailu- ja loogisten operaattoreiden syntaksi on hieman erilainen kuin mihin C-kielessä

    on totuttu. Esimerkiksi erisuuruusvertailu tehdään ~= operaattorilla. Loogisissa

    operaatioissa on vain yksi & ja | jos verrataan taulukoita alkioittain. Jos verrataan

    skalaareja eli yksittäisiä lukuja, käytetään && ja ||. Vertailuoperaattorit palauttavat

    totuusarvon 0 (false) tai 1 (true):

    >> 1 == 2

    ans =

    0

    >> 1 < 2

    ans =

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    1

    >> 1 ~= 2

    ans =

    1

    >> 1 >= 2

    ans =

    0

    >> false

    ans =

    0

    >> true

    ans =

    1

    Loogisia operaattoreita voidaan käyttää valitsemaan vektorista alkiot, jotka toteuttavat

    tietyn ehdon. Esimerkiksi seuraava esimerkki valitsee vektorista a kaikki alkiot, joiden

    arvo on 1 ja sijoittaa ne uuteen vektoriin b. Vektori ind sisältää totuusarvon tosi tai

    epätosi sen mukaan oliko vertailtava ehto tosi vai epätosi.

    >> a=[1 2 4 1 5]

    a =

    1 2 4 1 5

    >> ind=(a==1)

    ind =

    1 0 0 1 0

    >> b=a(ind)

    b =

    1 1

    Tehtävä: Vektori X sisältää alkiot -10 5 0 2 8 4 3 9 -5. Laske vektorin positiivisten ja

    negatiivisten alkioiden summat.

    Sitten esimerkki loogisista operaattoreista:

    >> a=logical([1 1 0 0 1])

    a =

    1 1 0 0 1

    >> b=logical([1 0 0 1 1])

    b =

    1 0 0 1 1

    >> a&b

    ans =

    1 0 0 0 1

    >> a | b

    ans =

    1 1 0 1 1

    >> ~a

    ans =

    0 0 1 1 0

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    >> xor(a,b)

    ans =

    0 1 0 1 0

    >> any(a)

    ans =

    1

    >> all(a)

    ans =

    0

    >> a && b

    ??? Operands to the || and && operators must be convertible to

    logical scalar values.

    >> (2 > 1) && (3 > 4)

    ans =

    0

    >> (2 > 1) || (3 > 4)

    ans =

    1

    Tehtävä: Täytä vektori sadalla satunnaislukuarvoilla väliltä 0 – 1. Laske niiden lukujen

    määrä jotka ovat välillä 0.3 – 0.7.

    Kuvaajien piirto

    Kaksiulotteiset kuvaajat

    Kaksiulotteisia kuvaajia voidaan piirtää näytölle mm. komennoilla plot, stem,

    bar, hist tai stairs.

    plot

    Esimerkki: Piirretään sini- ja kosinifunktion tulo välillä 0 -> 2π. Määritellään x-akseli >>x=[0:0.1:2*pi] ;

    >>y=sin(x);

    >>plot(x,y)

    Kuvaajaan voidaan lisätä akselien nimet ja otsikko:

    >>xlabel('x = 0:2\pi')

    >>ylabel('sin(x)')

    >>title('Sinifunktion kuvaaja','FontSize',12)

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Seuraava plot-komento hävittää edellisen tulostuksen plot-ikkunasta ja tulostaa uuden

    kuvaajan: >>y=cos(x)

    >>plot(x,y,'.')

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Kannattaa huomata, että tästä tulostuksesta on hävinnyt akselit ja otsikko. Se on täysin

    uusi kuvaaja. Komennon kolmas argumentti ’.’ määrittää tulostustyypin, joka tässä

    tapauksessa on piste (.). Plot-komennon helpistä löytyy täydellinen lista eri

    muotoiluvaihtoehdoista.

    Monesti halutaan tulostaa useampi kuvaaja yhteen kuvaan. Tämä voidaan tehdä

    määrittelemällä hold on

    Seuraavat komennot tulostavat sinin ja kosinin kuvaajat samaan kuvaan:

    >>x = 0:pi/100:2*pi;

    >>y = sin(x);

    >>plot(x,y)

    >>xlabel('x')

    >>ylabel('f(x)')

    >>title('Funktion f(x) kuvaaja','FontSize',12)

    >>y=cos(x)

    >>hold on

    >>plot(x,y,'.')

    Samaan ikkunaan piirrellään niin kauan kuin hold-asetus on päällä. Se voidaan poistaa

    komennolla

    >>hold off

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Jolloin seuraava plot komento tyhjentää edelliset tulostukset.

    Jos halutaan luoda uusi tulostusikkuna siten, että entinen jää näkyviin eikä kirjoiteta sen

    päälle, voidaan antaa komento >>figure

    Tulostetaan uuteen plot-ikkunaan (Figure 2) sinin ja kosinin tulo:

    >>plot(x,sin(x).*cos(x))

    >>title('Funktion f(x) kuvaaja','FontSize',12)

    >>xlabel('x')

    >>ylabel('sin(x)*cos(x)')

    Figure 2 on nyt aktiivinen. Jos halutaan vaihtaa takaisin Figure 1:een, annetaan figure-

    komento ja kuvaikkunan numero:

    >>figure(1)

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Nähdään, että Figure 1 tyhjentyi. Siihen voi taas tulostaa jotain.

    Yhteen ikkunaan voidaan tulostaa useampi kuvaaja käyttämällä subplot-komentoa.

    Komennon yleinen muoto on:

    subplot(m,n,p)

    m = rivien lukumäärä

    n = sarakkeiden lukumäärä

    p = aktiivisen ikkunan numero, lasketaan vasemmalta oikealle ja ylhäältä alas

    >>subplot(2,3,1);

    >>plot(x,sin(x));

    >>subplot(2,3,2);

    >>plot(x,sin(2*x));

    >>subplot(2,3,3);

    >>plot(x,cos(x));

    >>subplot(2,3,4);

    >>plot(x,cos(x/2));

    >>subplot(2,3,5);

    >>plot(x,cos(x).*sin(x));

    >>subplot(2,3,6);

    >>plot(x,cos(x).*sin(2*x));

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Tehtävä: Piirrä seuraavien funktioiden kuvaajat omiin ikkunoihinsa.

    a. exp(-x²) b. ln(x²+x+1) c. x sin(2x²+1) d. exp(sin(3x)) - 1

    Tehtävä: Piirrä edellisen tehtävän funktiot yhteen ikkunaan käyttäen subplot-komentoa.

    Lisää kuhunkin kuvaajaan otsikoksi piirrettävän funktion matemaattinen kaava.

    Tehtävä: Piirrä funktion f(x) = sin(1/x)

    kuvaaja välillä 0.01

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    plotyy = Tulostaa kaksi kuvaajaa, joista toisen arvot vasemmalla y-akselilla ja toisen

    arvot oikealla y-akselilla

    plot3 = 3-ulotteinen (x,y,z) plot

    grid = gridlines eli akselien viivoitus kuvaajan sisälle

    scatter = scatter-plot. Sama kuin plot(x,y,’o’)

    stem

    Käytetään yleensä diskreettien signaalien

    kuvaajien piirrossa. Stem piirtää

    pystyviivan, jonka päässä on ympyrä:

    >>x=[0:0.5:2*pi];

    >>stem(x,sin(x))

    bar

    Pylväsdiagrammi, oletus pystysuuntaan.

    Yhteen liittyvä data annetaan

    matriisimuodossa:

    >>x=[10 20 30 40 50 60

    55 44 87 94 34 34]

    x =

    10 20 30 40 50

    60

    55 44 87 94 34

    34

    >>bar(x)

    bar-komentoon liittyviä komentoja:

    barh = Horisontaalinen pylväsdiagrammi

    bar3 = 3-ulotteinen pylväsdiagrammi

    (vertikaalinen)

    bar3h = 3- ulotteinen pylväsdiagrammi

    (horisontaalinen)

    hist

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Histogrammi kuvaa, kuinka monta kertaa arvo tietyltä määritellyltä väliltä esiintyy

    lukujoukossa. Esimerkiksi satunnaislukujen arvonta. Arvotaan 100, 1000 ja 10 000

    satunnaislukua väliltä 0 – 1, lajitellaan 100 luokkaan ja piirretään luvuista histogrammi:

    >>x=rand(1,100);

    >>subplot(3,1,1)

    >>title('N=100');

    >>hist(x,100)

    >>x=rand(1,1000);

    >>subplot(3,1,2)

    >>title('N=1000');

    >>hist(x,100)

    >>x=rand(1,10000);

    >>subplot(3,1,3)

    >>hist(x,100)

    >>title('N=10000');

    Tehtävä: Oheisessa taulukossa on luokan HYV6SN Olio-ohjelmoinnin kurssin

    arvosanat. Piirrä arvosanojen jakauma käyttäen Matlabin histogrammia. Lisää

    histogrammiin otsikko ja nimeä akselit..

    Arvosanat: 4 4 3 3 0 1 0 3 0 4 2 1 0 5 4 1 4 1 2 0

    Kolmiulotteisten pintojen piirto (Mesh and surface plots)

    Matlab määrittelee kolmiulotteisen pinnan siten, x- ja y-akselien arvot muodostavat

    tasohilan (meshgrid), jonka päälle z-koordinaatti koodataan.

    mesh

    Oheinen esimerkki tulostaa 3-ulotteisen sinc-funktion kuvaajan käyttäen mesh-

    komentoa. (HUOM: sinc(x)=sin(x)/x)

    >>[X,Y] = meshgrid(-20:.5:20);

    >>R = sqrt(X.^2 + Y.^2) + eps;

    >>Z = sin(R)./R;

    >>mesh(X,Y,Z,'EdgeColor','black')

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    • meshgrid muuntaa argumenttina annetun vektorin kaksiulotteiseksi tasohilaksi.

    • R on euklidinen etäisyys hilan keskeltä

    • eps on ns. kone-epsilon, eli liukuluvun tarkkuus käytetyssä järjestelmässä

    surf

    Surface plot surf eli pintatulostus tulostaa samalla periaatteella kuin mesh. Erona on,

    että pinnan muodostavat suunnikkaat värjätään eri väreillä riippuen z:n arvosta. Oheiset

    komennot tulostavat edellisen esimerkin sinc-funktion kuvaajan käyttäen hsv-värimallia.

    Lisäksi colorbar-komento esittää käytetyn värikoodauksen:

    >>surf(X,Y,Z)

    >>colormap hsv

    >>colorbar

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Kuvaan voidaan lisätä läpinäkyvyys (transparency) alpha-parametrin avulla:

    >>alpha(0.4)

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    Kolmiulotteisen tiedon visualisointi kuvana

    Kolmiulotteinen tieto voidaan esittää myös kuvana, jossa x- ja y-akselit määrittävät kuva-

    alkion koodinaatit. Yksittäinen kuva-alkio on nimeltään pikseli (pixel). Jokaiseen

    pikseliin liittyy tieto sen sisältämästä väri- tai harmaasävyarvosta, joka vastaa edellisten

    esimerkkien x-koordinaattia.

    Kuvien piirtoon on ainakin 4 eri komentoa:

    • image(Z) = Näyttää matriisin Z kuvana käyttäen voimassa olevaa värikarttaa

    (colormap).

    • imagesc(Z)= Kuten image, mutta skaalaa kuvan niin että se käyttää koko käytössä olevaa värikarttaa

    • imview(Z) = Java:n virtuaalikonetta käyttävä versio (hidas mutta helppokäyttöinen)

    • imshow(Z)= vain kokonaislukutyypeille toimiva versio

    Visualisoidaan sinc-funktio eri tavoilla:

    >>image(Z)

    Eipä tuosta paljon mitään näy. Johtuu siitä, että datassa Z suurin arvo on vain 1.

    Kokeillaan skaalaavaa versiota:

    >>imagesc(Z)

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008

    VAU ☺ ! Tämä on siis sama sinc mikä edellisissä kuvissa mesh ja surf-komennoilla

    tulostettuna, mutta katsottuna ”ylhäältä päin”. Huomaa, että värikarttana on HSV kuten

    aikaisemmin. Värikartan voi vaihtaa colormap-komennolla:

    >>colormap(jet)

    >>imagesc(Z)

    >>colormap(gray)

    >>imagesc(Z)

  • T211003 Sovellusohjelmat

    Matlab perusteet osa 2: Matemaattisia funktioita.

    Operaattorit. Vertailu- ja loogiset operaattorit

    OAMK Tekniikan yksikkö Hyvinvointiteknologia

    Copyright © Jukka Jauhiainen 2008