[Edellinen] [Seuraava] [Alkusivu]

MATLAB-opas

Grafiikka

MATLAB sisältää monipuoliset plottauskomennot datan 2- ja 3-ulotteiseen visualisoimiseen. Katso esimerkiksi komentoja plot ja plot3.

Käyrien piirtäminen

Käyriä voi piirtää 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;
Plotataan vektorien x ja y pisteparit.
» plot(x,y)
plot1

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. Kokeile myös zoomausta axis-komennon avulla, kunnes diskretointiraja tulee vastaan, jolloin viimeistään on tehtävä uusi linspace.

help zoom antaa tietoa uudesta zoomauskomennosta. Komento zoom on mahdollistaa zoomattavan alueen valinnan hiirellä.

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 pi/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
plot

Huomaa, että plot(x1,cos(x1),'o') ('o' :n sijalla käy esim. 'x' tai '.') piirtää vain ao. pisteet, mutta jättää yhdistysjanat piirtämättä.

grid-komennolla saa koordinaatti- (hila-) viivat, usein kätevää. 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.

Piirtämishuomioita

Komennon linspace oletusarvona on jako sataan osaan, mikä on yleensä 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)

Yllä kannattaa panna merkille puolipisteen käyttö, joka säästää tarpeettomalta pitkän vektorin tulostukselta.

Huomaa erityisesti, että jos haluat muuttaa x-aluetta, vaikkapa "zoomata" kiintoisammalle alueelle, niin komennon x=linspace(...); jälkeen on laskettava y-arvot uudestaan uusissa x-pisteissä, muuten x- ja y-arvot eivät vastaa toisiaan ja kuva on sen mukainen, yleensä hyvin omituinen. Usein kannattaa sijoittaa kaikki yllä olevat 3 komentoa samalle riville ja nuolinäppäin-iteroida/editoida. Komento fplot on vaihtoehtoinen tapa funktion piirtämiseen. Tällöin funktion on oltava joko MATLAB-funktio (kuten sin, cos, exp, ...) tai itse määritelty (M-tiedostossa asustava) funktio.

Esim: fplot('sin',[0,2*pi]) tekee saman kuin x=linspace(0,2*pi);plot(x,sin(x)). (Modulo x-akselin diskretointi)

3D-grafiikka

Selvitä itsellesi, miten 3D-kuvia tehdään, vaikkapa seuraavan esimerkin avulla, kyse on funktion f(x,y)=e-x2-y2 kuvaajasta. Samalla tavalla muodostettu korkeusmatriisi soveltuu niin pinta- (surf), korkeuskäyrä- (contour) kuin yhdistelmäkuviin (surfc).

» xx=-2:.1:2; yy=xx;
» [x,y]=meshgrid(xx,yy);
» size(x)

ans =

    41    41

» z=exp(-x.^2-y.^2);
» surf(x,y,z)
surf1
» for j=1:5;view(-20+10*j,20*j),pause,end;  % Kokeile pientä liikettä
» contour(x,y,z)

[Edellinen] [Seuraava] [Alkusivu]