MATLAB sisältää monipuoliset piirtokomennot datan 2- ja
3-ulotteiseen visualisoimiseen. Katso esimerkiksi komentoja
plot
ja plot3
.
plot
-komennon
avulla. Ajatellaan, että haluamme piirtää käyrän
y=x3-2x+1 välillä [-2,2]. Näin se käy:
Muuttujaksi x
otetaan sataan osaan
diskretoitu x-akseli.
» x=linspace(-2,2,100);Luvun 100 voi jättää pois, sillä 100 on oletusarvo. Lasketaan y-vektoriin vastaavat funktion arvot. Huomaa
.^
(mieti tarkkaan pisteen merkitys).
» y=x.^3-2*x+1;komento
» plot(x,y)piirtää x-vektorin ja y-vektorin vastinkomponenttien ilmaisemat koordinaattipisteet
(x(i),y(i))
,
ja
yhdistää ne välijanoilla. Kun pisteitä
on tarpeeksi (usein 100
riittää), saadaan sileä käyrä
kuvaksi.
Kokeile minkälaisen käyrän saat jos 100:n sijasta käytät arvoa 10.
Kuvan skaalausta voi muuttaa komennolla axis
.
Perusmuoto on axis([xmin xmax ymin ymax])
, joka määrää
koordinaatiston rajat. axis
-komennon argumenttina voi olla
myös erinäisiä merkkijonoja, joista useimmin tarvittavia lienevät
axis('equal')
ja axis('square')
. Alkutilaan päästään
komennolla axis('normal')
.
axis('equal')
ja axis('square')
, jotka muuten voi
antaa myös tyyliin axis equal
, ovat erityisen tarpeellisia
silloin, kun halutaan esim. ympyrän näyttävän ympyrältä.
Kokeile miten äsken saamasi kuva muuttuu kun käytät yllä mainittuja
axis
-komennon eri muotoja.
Kuvaa voi käsitellä kuvaikkunan työkalunauhan valikosta näkyvillä
tavoilla. Sitä voi "zoomata" (suurennuslasi), kuvaan voi lisätä tekstejä
(insert-valikosta "text") jne.
Samoja asioita voi hoitaa myös komennoilla, kuten zoom on
.
Jos haluat piirtää toisen käyrän jo olemassaolevaan kuvaan, niin anna
komento hold on
. Tämän jälkeen kaikki seuraavat
käyrät tulevat edellisten 'päälle', kunnes annetaan komento hold
off
. Piirrä yllä saadun käyrän kanssa samaan kuvaan
y=2cos(x2-5x+17).
Toinen tapa usean käyrän piirtämiseksi samaan kuvaan on
plot
-komennon muoto
plot(x1,y1,x2,y2,x3,y3,...)
. plot
-komennossa
voi lisätä viivatyyppimääreen kullekin haluamalleen käyrälle. Jos
haluttaisiin vaikkapa piirtää sinikäyrä sinisellä, kosinikäyrä
katkoviivalla ja lisäksi merkitä jälkimmäiselle rinkuloilla kaikki
/2:n monikerrat välillä [0,10], olisi
sopivaa tehdä näin:
» x=linspace(0,10); » x1=0:pi/2:10; » plot(x,sin(x),'b',x,cos(x),'--',x1,cos(x1),'o') » grid
Huom 1: plot(x1,cos(x1),'o')
('o' :n sijalla käy
esim. 'x' tai '.') piirtää vain ao. pisteet, mutta jättää
yhdistysjanat piirtämättä.
Huom 2: Yleinen muoto on
plot(x1,y1,'mjono1',x2,y2,'mjono2',x3,y3,...)
, missä 'mjono1',
'mjono2',...
ovat yllä esiintyvän tyylisiä merkkijonoja, joilla ilmaistaan
väri tai viivatyyppi. Argumentit voidaan mieltää kolmikoiksi, yksi kolmikko
kutakin piirrettävää käyrää kohti. Mistä tahansa kolmikosta voidaan jättää
merkkijono-osa pois, jolloin ko. käyrä piirretään oletusvärillä ja -tyypillä.
Komennollagrid
- voidaan kuvaan lisätä
koordinaatti- (hila-) viivat, mikä on usein hyödyllistä.
Kokeile joitakin yllä
esitetyn kaltaisia yhdistelmiä.
Uuden piirtoikkunan saa avatuksi komennolla figure
.
Piirtoikkunoilla on numero, jonka avulla useista ikkunoista voidaan
valita se, johon halutaan piirtää: komento figure(n)
, missä
n
on ikkunan numero, ohjaa seuraavat käyrät ikkunaan
n
.
Funktiossa
linspace
on
oletusarvona jako sataan osaan, mikä on usein sopiva
2D-piirroksiin.
Tavallisimmin piirto tehdään siten tähän tapaan:
» x=linspace(a,b); % a:lla ja b:llä oltava numeeriset arvot. » y=lauseke;Lauseke, jossa esiintyy x, kuten
y=exp(sin(x))+x.^3;
» plot(x,y)
>> x=a:h:b;
Yllä kannattaa panna merkille puolipisteen käyttö, joka säästää tarpeettomalta pitkän vektorin tulostukselta.
fplot
on vaihtoehtoinen tapa funktion
piirtämiseen. Tällöin funktion on oltava joko MATLAB-funktio (kuten
sin
, cos
, exp
, ...) tai itse määritelty
funktio (joko m-tiedosto tai ns. "inline"-määrittely).
Versiossa 6 sallitaan myös Matlab-lauseke, jossa esiintyy yksi muuttuja.
Esim: fplot('sin',[0,2*pi])
tekee saman kuin
x=linspace(0,2*pi);plot(x,sin(x))
. Erona on se, että fplot
suorittaa ns. adaptiivisen diskretoinnin, joka mahdollistaa tarkan kuvan
vähemmällä laskentatyöllä.
Esim:
Määrittelemme funktion ns.
"inline"-tavalla.
>> f=inline('x.^2','x') f = Inline function: f(x) = x.^2 >> fplot(f,[0,1])Näinkin yksinkertaisesti voidaan menetellä:
fplot('x.^2',[0,1])
Tämä toimii sillä filosofialla, että merkkijono 'x.^2'
on
merkkijonona annettu Matlab-lauseke, jossa esiintyy vain yksi muuttuja.
Tällöin Matlab ymmärtää
sen tässä yhteydessä tämän yhden muuttujan funktioksi.
Saman filosofian mukaisesti myös inline
-määrittely voidaan kirjoittaa
lyhyemmin muodossa
>> f=inline('x.^2')
, mikäli siinä esiintyy vain
yksi muuttujasymboli.
>> t=linspace(0,2*pi); >> x=cos(t); y=sin(t); >> plot(x,y) >> axis equal; axis square;
>> t=linspace(0,6*pi); >> x=cos(t); y=sin(t); z=t; >> plot(x,y,z) >> axis equal; axis square; >> gridTämä on periaatteessa sama esimerkki kuin funktion plot3 avustussivulla. Kuvakin näkyy siellä (tosin hiukan eri parametrein).
Olkoon piirrettävänä funktion f(x,y)=e-x2-y2 määrittelemä pinta(pala) xy-tason neliön [-2,2] x [-2,2] alueella. Ajatus on, että jaetaan alue koordinaattiviivoilla suorakulmiohilaksi ja lasketaan kussakin hilapisteessä (xi, yj) funktion arvo zi,j=f(xi, yj). Näin saadaan korkeusmatriisi Z=(zi,j). Ajatellaan, että asetetaan kuhunkin hilapisteeseen (xi, yj) sauva, jonka (merkillä varustettu) pituus on zi,j. Näin syntyneen "sauvametsän" päällee asetetaan lepäämään "pintamatto".
Sama korkeusmatriisi soveltuu niin
pinta- (surf
), korkeuskäyrä-
(contour
) kuin yhdistelmäkuviin
(surfc
).
» x=-2:.1:2; y=x; % x-ja y-akselin diskretoinnit tässä samoja.
» [X,Y]=meshgrid(x,y); % X ja Y määräävät xy-alueen hilapisteistön.
» size(X), size(Y)
ans =
41 41
ans =
41 41
» Z=exp(-X.^2-Y.^2); % Korkeusmatriisin arvot hilapisteissä.
% Huomaa "pisteittäiset" laskutoimitukset.
» surf(X,Y,Z) % surf
-funktio "asettaa maton
% sauvametsän päälle".
» for j=1:5;view(-20+10*j,20*j),pause,end;Kuvan pyörittäminen käy vuorovaikutteisemmin kuvaikkunan työkalunauhan oikeanpuolimmaisesta painikkeesta.
» contour(X,Y,Z)