Professional Documents
Culture Documents
MATLAB3
MATLAB3
2012/2013
4. Grafičke funkčije
Svaki grafik možemo posmatrati kao prikaz numeričkih vrednosti. Poreklo ovih vrednosti,
međutim, diktira način na koji se one koriste ili generišu. U vedini slučajeva, izvor podataka
su posmatrane vrednosti ili diskretne vrednosti nepoznate funkcije. U tom slučaju, uglavnom
želimo da prikažemo određeni set tačaka u ravni ili prostoru i to pomodu vizuelnih
informacija kao što su boje ili linije za povezivanje tačaka.
Naredba plot spaja susedne tačke grafičkog prikaza ravnom linijom. Bar daje trakasti
grafikon, dok se kod stairs prikaza, odn stepenastog grafikona dobija prikaz sličan ivičnom
obrisu trakastog prikaza. Stem način prikazivanja svaki podatak prikazuje vertikalnom linijom
čija dužina odgovara iznosu podatka, a na vrhu linije se nalazi kružid (grafikoni diskretnih
podataka).
>> X = linspace(0,6*pi,18);
>> Y= -X.*sin(X);
1
Osnove biomedicinskog softvera
2012/2013
>> X = linspace(0,6*pi,18);
>> Y= -X.*sin(X);
>> X = linspace(0,6*pi,18);
>> Y= -X.*sin(X);
2
Osnove biomedicinskog softvera
2012/2013
plot(x,y,‘opcije’).
Ukoliko se vektor x i string opcija izostave, tada se prikazuju elementi vektora y u zavisnosti
od njihovog rednog broja. Ako se navedu i vektor x i y, tada elementi vektora čine niz
uređenih parova tačaka, pri čemu vektori x i y moraju imati isti broj elemenata. Ako je y
matrica, koja ima isti broj vrsta kao vektor x, naredba plot crta po jednu krivu za svaku
kolonu vektora y.
Naredba plot otvara novi grafički prozor i u njemu crta grafik. Ako je grafički prozor ved
postojao, grafik se crta u njemu.
Crtanje na logaritamskoj skali se postiže primenom funkcija semilogx, semilogy ili loglog
umesto funkcije plot, korišdenjem iste sintakse. Funkcija semilogx daje logaritamsku osu
apscise i linearnu ordinatu, funkcija semilogy daje prikaz na logaritamskoj ordinati i linearnoj
apscisi, dok funkcija loglog daje logaritamski prikaz na obe ose.
Otvaranje novog grafičkog prozora postiže se funkcijom figure, dok naredba figure(broj)
aktivira novi grafički prozor gde je broj redni broj prozora.
3
Osnove biomedicinskog softvera
2012/2013
Komanda hold omogudava da se na postojedi dijagram doda novi dijagram. Ako se zada
komanda hold on, MATLAB ne uklanja postojedi dijagram, ved na njega dodaje nove podatke,
normalizujudi ga ako je potrebno.
Primer 4: Cenzus
U Matlab-u postoje podaci o procentu glasova birača izašlih na izbore koji mora da ostvari
svaka izborna lista da bi dobila poslaničke mandate u Parlamentu (cenzus), konkretno za
Ameriku u periodu od 1790 do 1990. godine. Ove podatke demo učitati i predstaviti grafički
na slededi način:
250
200
150
100
50
0
1750 1800 1850 1900 1950 2000
>> plot(cdate,pop,'ro');
4
Osnove biomedicinskog softvera
2012/2013
250
200
150
100
50
0
1750 1800 1850 1900 1950 2000
>> plot(cdate,pop,'k:');
250
200
150
100
50
0
1750 1800 1850 1900 1950 2000
>> plot(cdate,pop,'ys-');
250
200
150
100
50
0
1750 1800 1850 1900 1950 2000
Ovaj set podataka bolje izgleda ako je y-osa logaritamski skalirana. Za to koristimo funkciju
semilogy.
5
Osnove biomedicinskog softvera
2012/2013
>> semilogy(cdate,pop,'p-');
3
10
2
10
1
10
0
10
1750 1800 1850 1900 1950 2000
Ukoliko želimo da dodamo krivu na ved postojede ose, koristimo naredbu hold on. Na
poslednjoj slici vidimo da podaci vrlo približno reprezentuju eksponencijalni trend. Možemo
dodati eksponencijalnu ekstrapolaciju od 1900. godine na slededi način:
>> t=1900:10:2030;
>> hold on
>> semilogy(t,exp(-20.44+0.01306*t),'k--')
3
10
2
10
1
10
0
10
1750 1800 1850 1900 1950 2000 2050
Ukoliko želimo da na grafiku nema slobodnog prostora, ved da ose prate krivu, možemo
koristiti naredbu axis tight da bismo napravili najmanji mogudi ram oko krive. Na taj način
dobijamo slededi grafik:
6
Osnove biomedicinskog softvera
2012/2013
2
10
1
10
___________________________________________________________________________
subplot(n,m,i),plot(…).
Komanda subplot deli grafički prozor u matricu, tj. na nxm malih oblasti, a zatim bira i-tu
oblast za tekudi prozor.
>> x = linspace(0,2*pi,50);
>> y1 = 2.5*cos(x);
>> y2 = 3.5*sin(x);
>> subplot (2,1,1)
>> plot(x,y1)
>> subplot(2,1,2)
>> plot(x,y2)
7
Osnove biomedicinskog softvera
2012/2013
___________________________________________________________________________
Grafičkim prikazima u MATLAB-u mogude je dodeliti naslov, oznake osa, tekst unutar
grafičkog prikaza i legendu pomodu slededih naredbi:
Primer 6: Primer u kojem se koriste funkcije legend, box, grid, labels i title
x = -2*pi:0.4:2*pi;
y1 = sin(x);
y2 = y1.^2./x;
plot (x,y1,':*',x,y2,'s--')
xlabel('x'), ylabel('y')
title ('Primer u kojem se koriste funkcije legend, box, grid, labels i title')
grid on; box on;
legend ('y1(x)','y2(x)')
text(-4,0.7,'sin(x)') % postavlja tekst sin(x) u <-4,0.7>
text(5,0.2,'sin(x)/x') % postavlja tekst sin(x)/x u <5,0.2>
8
Osnove biomedicinskog softvera
2012/2013
ezplot('x^2');
axis([-3 3 -0.5 10]);hold on;
ezplot('x+2*y-3=0');
xlabel('x-axis');ylabel('y-axis');
grid on;
[x,y] = ginput
9
Osnove biomedicinskog softvera
2012/2013
U Matlab-u postoje različiti pristupi za prikazivanje podataka u tri dimenzije, kao što su:
plot3, mesh, waterfall, surf, contour, slice, ribbon, stem3, sphere, cylinder i druge.
plot3(x,y,z) pri čemu su x, y i z tri vektora iste dužine, crta u 3D prostoru tačke čije su
koordinate elementi vektora x, y i z.
t=linspace(0,10*pi);
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
d=
11
Osnove biomedicinskog softvera
2012/2013
23 56 78
12 45 78
34 67 90
>> mesh(d)
>> surf(d)
subplot(1,2,1)
[x,y,z] = sphere;
surf(x,y,z), title('surf')
axis equal
subplot(1,2,2)
mesh(x,y,z),title('mesh')
axis equal
12
Osnove biomedicinskog softvera
2012/2013
>> [x,y,z]=peaks;
>> waterfall(x,y,z),title('waterfall')
13
Osnove biomedicinskog softvera
2012/2013
>> [x,y,z]=peaks;
>> contour(x,y,z),title('contour')
14
Osnove biomedicinskog softvera
2012/2013
5. UCITAVANJE I ISPISIVANJE
PODATAKA U MATLAB-U
BINARNI PODACI
Korišdenjem funkcija save i load, mogu se sačuvati podaci iz Matlab Workspace-a na disk, a
zatim se kasnije ponovo mogu učitati u Matlab.
TEKSTUALNI PODACI
U tekstualnom formatu, vrednosti podataka su ASCII (American Standard Code for
Information Interchange) kodovi koji predstavljaju slovne i numeričke karaktere. ASCII
tekstualni podaci se mogu videti u tekst-editoru.
GRAFIČKI PODACI
Matlab podržava mnoge standardne grafičke formate, kao što su: TIFF (Tagged Image File
Format), GIF (Graphics Interchange Format), JPEG (Joint Photographic Expert Group) i PNG
(Portable Network Graphics).
AUDIO I AUDIO/VIDEO PODACI
Matlab obezbeđuje funkcije koje omogudavaju interakciju sa slededim tipovima audio i
audio/video fajlova:
NeXT/Sun™ SPARC®station sound
Microsoft® WAVE sound
Audio/Video Interleaved (AVI)
Sound devices compatible with Microsoft Windows®
Audio player and recorder objects
Linear audio signals
15
Osnove biomedicinskog softvera
2012/2013
16
Osnove biomedicinskog softvera
2012/2013
Ako želimo da sačuvamo Matlab strukturu, postoji više mogudnosti: da sačuvamo celu
strukturu, da sačuvamo svako polje strukture kao posebnu promenljivu u MAT.fajlu ili da
sačuvamo određena polja kao zasebne promenljive.
Na primer, ako imamo strukturu S:
S.a = 12.7;
S.b={[4 5; 6 7]};
S.c=’Hello!’
sa standardnom naredbom:
save newstruct.mat S
sačuvademo celu strukturu u obliku strukture u fajlu newstruct.mat. Ako želimo da sačuvamo
pojedinačna polja strukture, pisademo:
save newstruct.mat –struct S;
Ako želimo da sačuvamo samo određena polja strukture, pisademo:
save newstruct.mat -struct S a c;
17
Osnove biomedicinskog softvera
2012/2013
c 1x5 10 char
Ukoliko želite da dodate nove promenljive ved postojedim promenljivama koje su sačuvane u
nekom MAT-fajlu, koristite slededu naredbu:
save –append.
Ovom naredbom Matlab upisuje promenljivu u MAT.fajl i to tako da, ukoliko ta promenljiva
ved postoji, on upisuje novu vrednost u tu promenljivu, a ukoliko takva promenljiva ne
postoji u MAT-fajlu, Matlab dodaje tu promenljivu i upisuje njenu vrednost iz Workspace-a.
UČITAVANJE U STRUKTURU
Da bismo učitali podatke iz MAT-fajla u Matlab strukturu, moramo u komandi load navesti
izlaznu promenljivu. U slededem primeru učitavamo podatke iz mydata.mat u polja strukture
S:
>> S = load('newstruct.mat')
S=
a: 12.7000
c: 'Hello'
>> whos S
Name Size Bytes Class Attributes
18
Osnove biomedicinskog softvera
2012/2013
Da bismo učitali tekstualne podatke sa komandne linije ili u M-fajlu, moramo koristiti jednu
od funkcija za učitavanje podataka u Matlabu. Izbor funkcije koju demo koristiti vršimo na
osnovu forme podataka.
Tekstualni podaci moraju biti formatirani po uniformnom obrascu redova i kolona, i to
korišdenjem tab-a, zareza, tačke-zareza ili nekog drugog karaktera koji razdvaja svaki
element fajla. Pojedinačni elementi mogu biti slova ili brojevi ili kombinacija slova i brojeva.
Da biste videli u kom formatu su zapisani vaši podaci, otvorite fajl u tekst-editoru. Nakon što
ste utvrdili format podataka, u Tabeli 5.2.1 pronađite uzorak koji najviše odgovara formatu
vaših podataka i tada dete znati koju funkciju treba da koristite za učitavanje podataka.
19
Osnove biomedicinskog softvera
2012/2013
12345
6 7 8 9 10
Kada koristimo naredbu load , ona učitava podatke i formira promenljivu sa istim imenom,
samo bez ekstenzije, u Workspace-u. Ako želimo da dodelimo neko drugo ime promenljivoj u
Workspace-u u koju učitavamo podatke iz my_data.txt napisademo sledede:
A=load('my_data.txt');
20
Osnove biomedicinskog softvera
2012/2013
gde smo kao drugi argument funkcije dlmread naveli karakter kojim su podaci odvojeni '';'' .
Funkcija dlmread ignoriše razmake između elemenata u fajlu, tako da i ukoliko napravimo
vedi razmak između elemenata, ova funkcija isto funkcioniše:
Da bismo učitali ove podatke, prvo moramo otvoriti fajl, a zatim korišdenjem funkcije
textscan pročitati sadržaj i na kraju zatvoriti fajl:
21
Osnove biomedicinskog softvera
2012/2013
Da bismo učitali ceo sadržaj fajla mydata.dat u Workspace, moramo navesti ime fajla i ‘string
formata’ kao argumente u funkciji textread. U ‘stringu formata’, treba navesti specifikatore
konverzije koji definišu kako da interpretiramo svaki pojedinačni podatak. Na primer,
stavidemo %s za podatke tipa string, %f za podatke sa pokretnom tačkom, itd. Za svaki
specifikator konverzije u ‘stringu formata’, mora se navesti posebna izlazna promenljiva. Broj
izlaznih promenljivih odgovara broju specifikatora ‘konverzije u stringu formata’.
U ovom primeru, textread čita iz fajla mydata.dat, primenjujudi format koji je naveden u
‘stringu formata’ na svaki red u fajlu dok ne stigne do EOF (end of file).
[ names, types, x, y, answer] = textread ( ‘mydata.dat’, %s %s %f %d %s , 3);
Ukoliko podaci u fajlu nisu razdvojeni razmakom, ved nekim drugim karakterom, mora se taj
karakter navesti kao parametar u funkciji textread. Na primer, ako su podaci razdvojeni sa ‘ ;
’, nepisademo naredbu textread u slededem obliku:
[ names, types, x, y, answer] = textread ( ‘mydata.dat’, %s %s %f %d %s , ‘delimiter’, ‘ ; ’ );
22
Osnove biomedicinskog softvera
2012/2013
Funkcija save koristi kao razdvajač razmak ukoliko se ne specificira neki drugi karakter kojim
želimo da odvojimo elemente u fajlu.
Ako koristimo funkciju save da ispišemo niz slovnih karaktera u ASCII fajl, ona de ispisati
ASCII-ekvivalent karaktera u fajl. Ako na primer, napišemo string ‘hello’, funkcija save de u
fajl ispisati vrednosti:
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
23
Osnove biomedicinskog softvera
2012/2013
1. Uključiti funkciju diary i dodeliti ime fajlu koji funkcija diary formira:
diary my_data.out
24
Osnove biomedicinskog softvera
2012/2013
A=
1 2 3 4
5 6 7 8
diary off
25
Osnove biomedicinskog softvera
2012/2013
Funkcija imread učitava sliku u Workspace u vidu multidimenzionalnog niza klase uint8.
Dimenzije niza zavise od formata podatka. Na primer, imread koristi tri dimenzije za
predstavljanje RGB slika.
>> whos I
Name Size Bytes Class
I 650x600x3 1170000 uint8
Matlab uključuje nekoliko funkcija pomodu kojih možemo dobiti informacije o fajlovima koji
sadrže audio podatke, video podatke ili oba navedena tipa podataka. Neke od tih funkcija
rade samo sa određenim formatima. Jedna od funkcija je mmfileinfo, koja može prikupiti
informacije o mnogim formatima fajlova. Ova funkcija vrada informaciju i o audio podacima
u fajlu i o video podacima, ukoliko ih ima u fajlu.
Neke od funkcija koje daju informaciju o fajlovima koji sadrže audio i video podatke u
određenim formatima su:
aufinfo – daje tekstualni opis sadržaja fajla koji sadrži AU podatke
26
Osnove biomedicinskog softvera
2012/2013
aviinfo – vrada kao izlaz strukturu koja sadrži informaciju o sadržaju 'Audio/Video
Interleaved' (AVI) fajla.
wavinfo – daje tekstualni opis sadržaja fajla koji sadrži WAV podatke
27
Osnove biomedicinskog softvera
2012/2013
28
Osnove biomedicinskog softvera
2012/2013
Slededi primer prikazuje korišdenje funkcije xlsread koja vrada jedan izlazni argument
ndata=xlsread( ‘tempdata.xls’, ‘Tabela3’ )
Ukoliko želimo da učitamo i numeričke i tekstualne podatke, odredidemo kao parametre dve
promenljive:
*ndata, headertext+=xlsread(‘tempdata.xls’, ‘Tabela3’)
29