Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Osnove biomedicinskog softvera

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.

4.1 Grafici dvodimenzionalnih podataka


Za crtanje dvodimenzionalnih grafika koriste se sledede naredbe: plot, bar, stairs i stem.

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

Primer 1: Crtanje grafika korišćenjem funkcije stem

>> X = linspace(0,6*pi,18);

>> Y= -X.*sin(X);

>> stem(X,Y),title('Crtanje grafika pomocu funkcije stem'),ylabel('Y')

1
Osnove biomedicinskog softvera
2012/2013

Primer 2: Crtanje grafika pomoću funkcije stairs

>> X = linspace(0,6*pi,18);

>> Y= -X.*sin(X);

>> stairs(X,Y),title('Crtanje grafika pomocu funkcije stairs'),ylabel('Y')

Primer 3: Crtanje grafika pomoću funkcije bar

>> X = linspace(0,6*pi,18);

>> Y= -X.*sin(X);

>> bar(X,Y),title('Crtanje grafika pomocu funkcije bar'),ylabel('Y')

2
Osnove biomedicinskog softvera
2012/2013

4.1.1 Funkcija plot


U ovom poglavlju de detaljno biti opisana naredba plot.

Sintaksa naredbe plot je:

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.

Opcijama se određuje boja i tip linije slededim oznakama datim u Tabeli 1.

OZNAKA BOJA OZNAKA TIP LINIJE


y žuta - puna linija
m ljubičasta : tačkasta linija
c svetlo plava -. tačka crta linija
r crvena -- isprekidana linija
g zelena
b plava
w bela
k crna

Tabela 1: Oznake za određivanje boje i tipa linije u grafičkom prikazu

Ostale opcije mogu se pronadi primenom funkcije help plot.

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:

>> load census

>> plot (cdate,pop)

Primetimo da postoje dve promenljive koje su formirane prilikom učitavanja cenzusa, a to su


promenljive cdate i pop. Ukoliko pristupimo ovim promenljivama, videdemo da su u
promenljivoj cdate sačuvane godine od 1790 do 1990, a u promenljivoj pop procenti glasova
birača po tim godinama. Funkcija plot povezuje tačke koje su definisane vrednostima u dva
odgovarajuda vektora. Rezultat primene funkcije plot na podatke cenzus je prikazan na slici:

250

200

150

100

50

0
1750 1800 1850 1900 1950 2000

Možemo promeniti tip linije na slededi način:

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

Pomodu ovih naredbi dobijamo slededi grafik:

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

1800 1850 1900 1950 2000

___________________________________________________________________________

4.1.2 Funkcija subplot


Crtanje više koordinatnih sistema u istom grafičkom prozoru postiže se naredbom subplot.
Sintaksa naredbe subplot je oblika:

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.

Primer 5: Korišćenje funkcije subplot

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

Prva naredba subplot određuje da de se koordinatni sistemi postaviti u 2 reda i u jednoj


koloni i da je aktivan prvi od njih. U taj koordinatni sistem se ucrtava kriva određena
vektorima x i y1. Druga subplot naredba određuje da je aktivan drugi koordinatni sistem
(koordinatni sistem u drugom redu) i u njega se crta kriva određena vektorima x i y2.

7
Osnove biomedicinskog softvera
2012/2013

___________________________________________________________________________

4.1.3 Funkcije za označavanje grafičkih prikaza

Grafičkim prikazima u MATLAB-u mogude je dodeliti naslov, oznake osa, tekst unutar
grafičkog prikaza i legendu pomodu slededih naredbi:

title(‘string’) upisuje specificiran string na mesto naslova,

xlabel(‘string’) upisuje specificiran string na mesto oznake x ose,

ylabel(‘string’) upisuje specificiran string na mesto oznake y ose,

text(‘string’) omogudava upis teksta na mesto koje se određuje zadavanjem koordinata,

legend(‘str1’,’str2’,’str3’) upisuje se legenda i to tako da se uz tip linije prve krive ispisuje


str1, druge krive str2 i trede krive str3.

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

Primer 7: Grafičko rešavanje jednačina

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

Pomodu kursora obeležavamo tačke


preseka dve krive. Rešenje se ispisuje u
Komandnom prozoru.

Komanda close zatvara tekudi grafički prozor.

4.2 Trodimenzionalni grafici


Za trodimenzionalni prikaz potrebno je definisati dva vektora dimenzija nx1 i mx1 i jednu
matricu dimenzija nxm. Na taj način se dobija skup tačaka određenih uređenim trojkama.
Rezultat prikaza je površina u trodimenzionalnom koordinatnom sistemu, koja je za svaku
kombinaciju tačaka iz x-y ravni određenih vektorima x i y definisana vrednošdu na z osi
definisanom matricom z.

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.

Primer 8: Primena funkcije plot3


Ova funkcija crta linije i tačke u 3D prostoru.
10
Osnove biomedicinskog softvera
2012/2013

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

Primer 9: Primena funkcije mesh i surf


Komande mesh i surf formiraju 3D površinske grafike podataka matrice.

>> d=[23 56 78;12 45 78;34 67 90]

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

Primer 10: Primena funkcije waterfall

>> [x,y,z]=peaks;
>> waterfall(x,y,z),title('waterfall')

13
Osnove biomedicinskog softvera
2012/2013

Primer 11: Primena funkcije contour

>> [x,y,z]=peaks;
>> contour(x,y,z),title('contour')

14
Osnove biomedicinskog softvera
2012/2013

5. UCITAVANJE I ISPISIVANJE
PODATAKA U MATLAB-U

MATLAB može da učitava i ispisuje sledede tipove podataka:


 Binarne podatke
 Tekstualne podatke
 Grafičke podatke
 Audio i audio/video podatke

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

PODACI SMEŠTENI U TABELE


Matlab omogudava učitavanje i ispisivanje podataka smeštenih u Excel tabele i Lotus 123
tabele.

15
Osnove biomedicinskog softvera
2012/2013

5.1. ISPISIVANJE I UČITAVANJE PODATAKA U MAT-FAJLOVE


MAT-fajlovi su binarni Matlab fajlovi sa zapisom duple tačnosti. Ovi fajlovi se mogu napraviti
na jednom računaru i kasnije se mogu pročitati uz pomod Matlaba na drugom računaru u
drugom formatu, u onolikoj tačnosti i opsegu koliko drugi format dozvoljava.

5.1.1 Korišćenje funkcije save


Funkciju save koristimo kada želimo da sačuvamo promenljive koje smo formirali u
Workspace-u, u obliku binarnog ili ASCII fajla. Na taj način mogude je sačuvati sve
promenljive iz Workpace-a koristedi jednu jedinu operaciju (ukoliko ne navedete ime fajla,
Matlab koristi ime matlab.mat):
save filename
Ukoliko na slededi način zapišete naredbu, sačuvadete samo one promenljive koje odredite:
save filename var1 var2 ... varN
Možemo koristiti i znak (*) uz ime promenljive ako želimo da sačuvamo samo one
promenljive čija imena odgovaraju navedenom obrascu. Na primer, slededa komanda de
sačuvati sve promenljive čija imena počinju sa str:
save strinfo str*
>> str1=[1 2 3];
>> str_o=267;
>> string='proba';
>> save
Saving to: matlab.mat
>> save promenljive
>> save prva str1
>> save str-promenljive str*
>> whos -file str-promenljive
Name Size Bytes Class Attributes
str1 1x3 24 double
str_o 1x1 8 double
string 1x5 10 char

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;

>> S = struct('a' ,12.7, 'b', [4 5; 6 7], 'c', 'Hello');


>> save newstruct.mat S
>> whos -file newstruct
Name Size Bytes Class Attributes
S 1x1 578 struct
>> save newstruct.mat -struct S
>> whos -file newstruct
Name Size Bytes Class Attributes
a 1x1 8 double
b 2x2 32 double
c 1x5 10 char
>> save newstruct.mat -struct S a c;
>> whos -file newstruct
Name Size Bytes Class Attributes
a 1x1 8 double

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.

5.1.2 Korišćenje funkcije load


Funkciju load koristimo kada želimo da učitamo promenljive iz binarnog ili ASCII fajla u
Workspace. Na ovaj način možemo učitati sve promenljive jednom operacijom (ukoliko ne
navedemo ime fajla, Matlab učitava iz fajla matlab.mat):
load filename
Možemo učitati samo određene promenljive slededom naredbom:
load filename var1 var2 … varN
Ili, kao i u slučaju funkcije save, možemo koristiti znak (*) pored imena promenljive i na taj
način učitati samo promenljive čija imena počinju tim slovima:
load strinfo str*
Treba voditi računa o tome da de, ukoliko učitavamo promenljivu, a u Workspace-u ved
postoji neka promenljiva sa istim imenom, Matlab upisati novu vrednost u tu promenljivu.

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

S 1x1 370 struct

UČITAVANJE BINARNIH PODATAKA


Kao što smo rekli, MAT-fajlovi su binarni Matlab fajlovi sa duplom tačnošdu koji se formiraju
pomodu funkcije save, a koji se čitaju pomodu funkcije load. MAT-fajlovi mogu sadržati
komprimovane i nekomprimovane podatke ili oba tipa podataka. Matlab raspoznaje
komprimovane podatke po oznakama koje dodaje svakoj promenljivoj pri izvršavanju
naredbe save. Kada učitava komprimovane podatke, Matlab automatski vrši dekompresiju
odgovarajudih podataka.

5.2 ISPISIVANJE I UČITAVANJE TEKSTUALIH PODATAKA


5.2.1 Učitavanje tekstualnih podataka

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.

FUNKCIJA TIP PODATAKA ZA ODVAJANJE ELEMENATA FAJLA


KORISTE SE:
csvread numerički podaci samo zarezi
dmlread numerički podaci bilo koji karakter
fscanf slovni i numerički bilo koji karakter
podaci
load numerički podaci samo razmak
textread slovni i numerički bilo koji karakter
podaci

19
Osnove biomedicinskog softvera
2012/2013

textscan slovni i numerički bilo koji karakter


podaci

Tabela 5.2.1 Funkcije za učitavanje podataka

UČITAVANJE NUMERIČKIH TEKSTUALNIH PODATAKA


Ukoliko podaci sadrže samo numeričke elemente, može se koristiti više funkcija za učitavanje
koje postoje u Matlabu, u zavisnosti od toga kako su elementi razdvojeni u fajlu. Ako su
elementi fajla podeljeni u vrste i pri tome, svaka vrsta ima isti broj elemenata, najbolje je
koristiti naredbu load.
Na primer, neka se u fajlu my_data.txt nalaze podaci koji su raspoređeni u dve vrste brojeva
koji su međusobno razdvojeni razmakom:

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

UČITAVANJE ASCII PODATAKA KOJI SU ODVOJENI NEKIM KARAKTEROM U FAJLU


Ukoliko su podaci u fajlu odvojeni nekim karakterom, a da to nije razmak, postoji više
funkcija koje možemo koristiti za učitavanje. Najjednostavnija je dlmread.
Na primer, uzmimo slededi fajl ph.dat čiji je sadržaj razdvojen sa znakom ' ; ' :

7.2; 4.3; 2.3;5.5


2.3; 7.6; 1.2; 8.7

Da bismo učitali ceo sadržaj ovog fajla u niz A, ukucademo:


A=dlmread( ' ph.dat ', ' ; ' );

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:

7.2; 4.3; 2.3;5.5


2.3; 7.6 ; 1.2; 8.7

UČITAVANJE NUMERIČKIH PODATAKA KOJI SADRŽE TEKST U ZAGLAVLJU


Za učitavanje ovakvih podataka koristi se funkcija textscan, pri čemu u headerlines-
parametru možemo da navedemo koliko linija u zaglavlju funkcija treba da ignoriše. Na
primer, neka fajl ocene.dat sadrži formatirane brojčane podatke i jedan red teksta u
zaglavlju:

Ocena1 Ocena2 Ocena3


7 6 9
9 8 7
10 7 8

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:

fid = fopen (' ocene.dat ',' r ');


grades = textscan( fid, ' %f %f %f ', 3, ' headerlines ', 1 );
fclose(fid);

UČITAVANJE KOMBINACIJE SLOVNIH I NUMERIČKIH PODATAKA


Ukoliko podaci predstavljaju kombinaciju slovnih i numeričkih ASCII podataka, za njihovo
učitavanje koristimo ili funkciju textscan ili funkciju textread. Funkcija textscan vrada izlaz u
nizu, a textread u odvojenim promenljivima i daje mogudnost određivanja klase svake
promenljive. Na primer, neka fajl mydata.dat sadrži kombinaciju slovnih i numeričkih
podataka:

21
Osnove biomedicinskog softvera
2012/2013

Ivana Tip1 13.25 46 Da


Jovan Tip2 34.87 55 Da
Marko Tip3 68.89 24 Ne

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’, ‘ ; ’ );

5.2.2 Ispisivanje tekstualnih podataka


Matlab ima ugrađene funkcije koje mogu da ispisuju, na primer, matricu kao tekst-fajl u
kojem su vrste i kolone predstavljene kao brojne vrednosti razdvojene razmakom. Izbor
funkcije koju demo koristiti zavisi od količine i formata podataka koje želimo da ispišemo.
Funkcije koje se koriste za ispisivanje podataka navedene su u Tabeli 1.2.2.

FUNKCIJA TIP PODATAKA ZA ODVAJANJE ELEMENATA


FAJLA KORISTE SE:
csvwrite numerički podaci samo zarez
diary numerički podaci ili niz samo razmak
dlmwrite numerički podaci bilo koji karakter
fprintf slovni i numerički podaci bilo koji karakter
save numerički podaci tab i razmak

Tabela 5.2.2. Funkcije za ispisivanje podataka

22
Osnove biomedicinskog softvera
2012/2013

ISPISIVANJE FAJLOVA SA RAZDVOJENIM ASCII PODACIMA


Da bismo ispisali niz kao fajl sa razdvojenim ASCII podacima, možemo koristiti ili funkciju
save u kojoj demo navesti ASCII kvalifikator, a možemo koristiti i funkciju dlmwrite. Funkcija
save je laka za korišdenje, dok nam funkcija dlmwrite daje mogudnost da navedemo željeni
karakter za odvajanje elemenata u fajlu kao i mogudnost da ispišemo podskup niza tako što
demo odrediti opseg vrednosti koje želimo da ispišemo.

KORIŠDENJE FUNKCIJE save


Ako želimo da ispišemo niz A,
A=[1 2 3 4 ; 5 6 7 8];
koristidemo funkciju save na slededi način:
save my_data.out A -ASCII
Ako otvorite ovaj fajl u tekst-editoru, videdete da izgleda ovako:
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00
5.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00

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

KORIŠDENJE FUNKCIJE dlmwrite


Ako želite da ispišete niz u ASCII formatu i pri tome odredite razdvajač koji de se koristiti u
fajlu, koristite funkciju dlmwrite. Na primer, da bismo ispisali niz A:
A=[1 2 3 4; 5 6 7 8];
kao fajl sa ASCII podacima koji koristi ‘ ; ’ kao razdvajač elemenata fajla, koristidemo slededu
naredbu:
dlmwrite( ‘ my_data.out ’, A, ‘ ; ’);

23
Osnove biomedicinskog softvera
2012/2013

Ako pogledate formirani fajl u tekst-editoru, videdete da izgleda ovako:


1;2;3;4
5;6;7;8
Primetimo da funkcija ovako napisana ne dodaje razdvajače na kraju redova. Ukoliko ne
navedemo razdvajač koji želimo, funkcija dlmwrite koristi zarez. Možemo navesti razmak ( ‘
’ ) ili ako navedemo prazno, (‘ ’), između navodnika , nede biti razdvajanja elemenata fajla.

KORIŠDENJE FUNKCIJE diary ZA ISPISIVANJE PODATAKA


Funkcija diary se koristi kada želimo da ispišemo male numeričke nizove. Ova funkcija pravi
kopiju Matlab sesije na disku. Na primer, ako u Workspace-u postoji niz A:
A=[1 2 3 4; 5 6 7 8];.
Da bismo ispisali ovaj niz pomodu funkcije diary, izvršidemo sledede naredbe u Matlab
promptu:

1. Uključiti funkciju diary i dodeliti ime fajlu koji funkcija diary formira:
diary my_data.out

2. Prikazati sadržaj niza koji želimo da ispišemo:


A=
1 2 3 4
5 6 7 8

3. Isključiti funkciju diary:


diary off
Funkcija diary pravi fajl my_data.out i snima sve naredbe koje su izvršene u Matlab sesiji sve
dok je ne isključimo.

4. Otvoriti formirani fajl my_data.out u tekst-editoru i obrisati višak teksta, s obzirom da de u


fajlu biti ispisani i nepotrebni podaci, kao što je prikazano ispod:
A

24
Osnove biomedicinskog softvera
2012/2013

A=
1 2 3 4
5 6 7 8
diary off

5.3 Rad sa grafičkim podacima


Ukoliko imamo fajl standardnog grafičkog formata, koristimo funkciju imfinfo da bismo dobili
informaciju o sadržaju tog fajla. Funkcija imfinfo vrada kao rezultat strukturu koja sadrži
informaciju o fajlu. Polja u strukturi variraju u zavisnosti od formata fajla, ali gotovo uvek
funkcija vrada neke osnovne informacije uključujudi ime fajla, poslednji datum modifikacije,
veličinu fajla i format fajla.
Slededi primer ilustruje rad funkcije imfinfo za slučaj fajla JPEG formata:
>> info = imfinfo('ngc6543a.jpg')
info =
Filename:
'/Applications/MATLAB_R2009a/MATLAB_R2009b.app/toolbox/matlab/demos/ngc6543a.jp
g'
FileModDate: '01-Oct-1996 22:19:44'
FileSize: 27387
Format: 'jpg'
FormatVersion: ''
Width: 600
Height: 650
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {[1x69 char]}

25
Osnove biomedicinskog softvera
2012/2013

5.3.1 Učitavanje grafičkih podataka


Za učitavanje grafičkog fajla u Workspace koristi se funkcija imread. Koristedi ovu funkciju,
možemo učitati podatke slededih formata: TIFF, GIF, JPEG i PNG.
Slededi primer prikazuje učitavanje slike JPEG formata u Matlab Workspace u promenljivu I:
I=imread('ngc6543a.jpg');

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

5.3.2 Ispisivanje grafičkih podataka


Za ispisivanje grafičkih podataka iz Matlab Workspace-a, u nekom standardnom grafičkom
formatu, koristimo funkciju imwrite. Korišdenjem ove funkcije, možemo ispisati podatke u
formatima kao što su: TIFF, JPEG i PNG.
Slededi primer ispisuje multidimenzionalni niz podatka I iz Matlab Workspace-a u fajl u TIFF
formatu. Klasa izlazne slike koja se upisuje u fajl zavisi od specificiranog formata.
imwrite(I, 'my_graphics_file.tif','tif');

5.4 Rad sa audio/video podacima

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

5.4.1 Učitavanje Audio/Video podataka


Matlab ima ugrađene funkcije koje omogudavaju učitavanje audio i video podataka u Matlab
Workspace. Neke od ovih funkcija čitaju audio ili video podatke iz fajlova. Drugi način da
učitamo audio podatke u Matlab Workspace je da ih snimimo koristedi audio input uređaj,
kao što je mikrofon.
Funkcije koje čitaju audio ili video podatke iz nekog fajla su:

 auread – daje podatke iz AU fajla


 aviread – daje AVI podatke u obliku Matlab-filma
 mmreader – daje AVI, MPG ili WMV video podatke
 wavread – daje podatke iz WAV fajla.

5.4.2 Snimanje audio podataka


Za snimanje zvuka pomodu mikrofona, koriste se funkcije audiorecorder i wavrecord
(Windows os).
Nakon što smo učitali audio podatke, Matlab nam omoguduje da taj sadržaj slušamo
koristedi funkciju audioplayer. Možemo koristiti i funkcije sound i soundsc, kao i wavplay za
fajlove sa ekstenzijom wav.

5.4.3 Ispisivanje Audio/Video podataka


Matlab ima nekoliko funkcija koje možemo koristiti za ispisivanje audio ili video podatke iz
Matlab Workspace-a u fajl koristedi određene formate fajlova.

ISPISIVANJE AUDIO PODATAKA


U Matlabu, audio podaci su numerički podaci koje možemo ispisati koristedi neku
standardnu funkciju za ispisivanje podataka, kao što je save. U Matlabu takođe postoji
nekoliko funkcija koje ispisuju audio podatke u fajlove u određenom formatu:
 auwrite – ispisuje podatke u AU format fajla
 wavwrite – ispisuje podatke u WAV format fajla

27
Osnove biomedicinskog softvera
2012/2013

5.4.4 Ispisivanje Video podataka u AVI format


U Matlabu možemo ispisati video podatke u obliku AVI fajla. Da bismo to uradili koristimo
funkciju avifile da napravimo avifile objekat. Kada imamo objekat, možemo koristiti metode i
opcije za kontrolisanje mnogih aspekata procesa ispisivanja podataka.

5.5 Rad sa podacima zapisanim u tabele


Da bismo utvrdili da li fajl sadrži tabelu koja može da se pročita koristimo funkciju xlsfinfo,
pri čemu je ulazni argument ime fajla, a izlazni parametri su:
 String ‘Microsoft Excel Spreadsheet’, ukoliko fajl sadrži Excel tabelu koja se može
pročitati sa funkcijom xlsread. U suprotnom, izlaz je prazni string (‘ ’).
 Niz stringova koji sadrže imena svakog Worksheet-a u fajlu.

Slededi primer prikazuje informacije o fajlu sa tabelama tempdata.xls:


>> [type, sheets]=xlsfinfo('tempdata.xls')
type =
Microsoft Excel Spreadsheet
sheets =
'Tabela1' 'Tabela2' 'Tabela3'

5.5.1 Ispisivanje u fajl


Da bismo ispisali matricu iz Workspace-a u fajl sa tabelom, koristimo funkciju xlswrite. Ulazni
parametri funkcije xlswrite su:
 Ime fajla u koji hodemo da upišemo podatke
 Matrica koju želimo da ispišemo
 Ime Worksheet-a u koji upisujemo
 Opseg delija u tabeli u koji hodemo da upišemo podatke

Izlazni argumenti funkcije xlswrite su:


 Status o izvršenju naredbe
 Upozorenje ili poruka o grešci

Slededi primer ilustruje upisivanje kombinacije teksta i numeričkih podataka u fajl


tempdata.xls korišdenjem funkcije xlswrite, navodedi Worksheet 'Tabela3’ i delije u koje
treba upisati podatke. Matrica 4x2 se upisuje u pravouganu oblast koja počinje od delije E1:

28
Osnove biomedicinskog softvera
2012/2013

>> a={'A1', 'A2'; 13 23; 34 45; 56 67; 78 89}


a=
'A1' 'A2'
[13] [23]
[34] [45]
[56] [67]
[78] [89]
>> xlswrite('tempdata.xls', a, 'Tabela3', 'E1');

5.5.2 Učitavanje iz fajla


Ako hodemo da učitamo matricu iz Excel tabele u Matlab Workspace, koristimo funkciju
xlsread. Ova funkcija dozvoljava i opciju da otvorimo Excel prozor koji prikazuje fajl, a zatim
interaktivno izaberemo Worksheet i opseg podataka koji želimo da učitamo.
Ulazni parametri ove funkcije su:
 Ime fajla
 Matrica koju želimo da učitamo
 Ime worksheet-a iz kojeg učitavamo podatke
 Opseg delija u tabeli iz kojeg hodemo da učitamo podatke
 Ključna reč koja otvara Excel prozor i omogudava interaktivno odabiranje Worksheet-
a i opsega podataka

Tri odvojena izlazna parametra ove funkcije su:


 Numerički podaci
 String-podaci
 Bilo koji sadržaj neobrađene delije

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

You might also like