Matemaattisia funktioita



Samankaltaiset tiedostot
Matlabin perusteita Grafiikka

Matlab-perusteet Harjoitustehtävien ratkaisut

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Zeon PDF Driver Trial

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

plot(f(x), x=-5..5, y= )

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014

BL40A0000 Säätötekniikan ja signaalinkäsittelyn

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

T Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

Matemaattiset ohjelmistot A. Osa 2: MATLAB

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1

Java-kielen perusteita

13. Loogiset operaatiot 13.1

Olio-ohjelmointi Syntaksikokoelma

Ohjelmointiharjoituksia Arduino-ympäristössä

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Luku 3. Listankäsittelyä. 3.1 Listat

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Harjoitus 10: Mathematica

Ohjelmointi 1 C#, kevät 2013,

Ohjelmoinnin peruskurssi Y1

Fortran 90/95. + sopii erityisesti numeriikkaan:

Java-kielen perusteet

Ohjelmointi 1 Taulukot ja merkkijonot

Mat-1.C Matemaattiset ohjelmistot

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1,

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

ITKP102 Ohjelmointi 1 (6 op)

Tietotyypit ja operaattorit

ITKP102 Ohjelmointi 1 (6 op)

Java-kielen perusteet

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma

Ohjelmoinnin perusteet Y Python

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

Harjoitus 4 (viikko 47)

Harjoitus 5 (viikko 41)

Tilastolliset toiminnot

13. Loogiset operaatiot 13.1

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Harjoitus 6 (viikko 42)

Python-ohjelmointi Harjoitus 2

Juha Haataja

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Tietueet. Tietueiden määrittely

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

OpenOffice.org Base 3.1.0

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Ohjelmointi 1 C#, kevät 2013, 2. tentti

13 Operaattoreiden ylimäärittelyjä

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Kielioppia: toisin kuin Javassa

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

17. Javan omat luokat 17.1

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Tieto- ja tallennusrakenteet

Valitse ruudun yläosassa oleva painike Download Scilab.

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Excel funktiot. Sisällys

Taulukot. Jukka Harju, Jukka Juslin

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

7. Näytölle tulostaminen 7.1

Harjoitus 5 (viikko 48)

Harjoitus 3 (viikko 39)

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Kaikkien paikallisten ääriarvojen haku

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

811120P Diskreetit rakenteet

Ohjelmoinnin perusteet, kurssikoe

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Tekla Structures Dialogien muokkaus

17. Javan omat luokat 17.1

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Kokonaislukuaritmetiikka vs. logiikkaluupit

mplperusteet 1. Tiedosto: mplp001.tex Ohjelmat: Maple, [Mathematica] Sievennä lauseke x 1 ( mplp002.tex (PA P1 s.2011)

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Transkriptio:

Matemaattisia funktioita Funktio Toiminta max(x) max(x,[],dim) min(x) Vektorin X suurin luku. Matriiseille hakee suurimman luvun j jokaiselta matriisin sarakkeelta. DIM = 1 Laskee summan sarakkeilta (oletus, voi jättää pois) DIM = 2 Laskee summan riveiltä 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) ceil(x) floor(x) fix(x) abs(x) sum(x) Pyöristys lähimpään kokonaislukuun Pyöristys kohti + ääretöntä Pyöristys kohti - ääretöntä Pyöristys kohti nollaa Itseisarvo 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) diff(x,n) diff(x,n,dim) mean(x) Vektoreille [X(2)-X(1) X(3)-X(2) X(n)-X(n-1)] Matriiseille [X(2:n,:) - X(1:n-1,:)] N:n kertaluvun erotus 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

var(x) var(x,w,dim) Vektorin X varianssi (keskihajonnan neliö, ks. Syntaksi edellä) 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) rand(m,n) rand N alkion mittainen vaakavektori satunnaislukuja MxN kokoinen matriisi satunnaislukuja (ilman argumentteja) Yksi satunnaisluku. Arvo vaihtuu joka kutsukerralla >> a=[3 4 2 5 9]; >> sort(a) 2 3 4 5 9 >> sort(a,'descend') 9 5 4 3 2 >> mean(a) 4.6000 >> median(a) 4 >> cumsum(a) 3 7 9 14 23 >> cumprod(a) 3 12 24 120 1080 >> diff(a) 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.

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 %):

>>%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

Muutama esimerkki: >> s='aku' s = aku >> q='ankka' q = ankka >> strcat(s,q) akuankka >> p=strcat(s,q) p = akuankka >> strtok(p,'u') ak >> findstr(p,'uan') 3 >> strcmp(s,q) 0 >> strrep(p,'aku','roope') roopeankka >> strrep(p,'aku','roope') 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

dec2hex int2str mat2str num2str Convert decimal to hexadecimal number in string Convert integer to string Convert a matrix to string 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. Tulostuu: s = struct('type',{'big','little'},'color',{'red'},'x',{3 4}) s = 1x2 struct array with fields: type color x

Tietuetaulukon alkioihin viitataan antamalla taulukon indeksi tavallisissa suluissa (samalla lailla kuin viitattiin vektorin alkioihin): >>s(1) type: 'big' color: 'red' x: 3 >>s(2) 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) 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.

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 <= ge - Greater 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 0 >> 1 < 2

1 >> 1 ~= 2 1 >> 1 >= 2 0 >> false 0 >> true 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 1 0 0 0 1 >> a b 1 1 0 1 1 >> ~a 0 0 1 1 0

>> xor(a,b) 0 1 0 1 0 >> any(a) 1 >> all(a) 0 >> a && b??? Operands to the and && operators must be convertible to logical scalar values. >> (2 > 1) && (3 > 4) 0 >> (2 > 1) (3 > 4) 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)

Seuraava plot-komento hävittää edellisen tulostuksen plot-ikkunasta ja tulostaa uuden kuvaajan: >>y=cos(x) >>plot(x,y,'.')

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

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 figurekomento ja kuvaikkunan numero: >>figure(1)

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));

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<x<0.1 niin, että kuvaaja on mahdollisimman sileä, so. että siinä on mahdollisimman vähän kulmia. Plot-komentoon liittyviä muita komentoja, joita tässä ei käydä tarkemmin läpi: axis([xmin xmax ymin ymax]) = x- ja y-akselien suurimmat ja pienimmät arvot (skaalaus) semilogx = Logaritminen (10-kantainen) x-akseli semilogy = Logariminen y-akseli loglog = Molemmat akselit logaritmiset

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

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 meshkomentoa. (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')

surf 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ä 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

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

Kolmiulotteisen tiedon visualisointi kuvana Kolmiulotteinen tieto voidaan esittää myös kuvana, jossa x- ja y-akselit määrittävät kuvaalkion 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)

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)