29
Osnove biomedicinskog softvera 2012/2013 1 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')

Osnove biomedicinskog softvera

Embed Size (px)

Citation preview

Page 1: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

1

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

Page 2: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

2

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

Page 3: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

3

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.

Page 4: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

4

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:

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

>> plot(cdate,pop,'ro');

1750 1800 1850 1900 1950 20000

50

100

150

200

250

Page 5: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

5

>> plot(cdate,pop,'k:');

>> plot(cdate,pop,'ys-');

Ovaj set podataka bolje izgleda ako je y-osa logaritamski skalirana. Za to koristimo funkciju

semilogy.

1750 1800 1850 1900 1950 20000

50

100

150

200

250

1750 1800 1850 1900 1950 20000

50

100

150

200

250

1750 1800 1850 1900 1950 20000

50

100

150

200

250

Page 6: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

6

>> semilogy(cdate,pop,'p-');

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:

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:

1750 1800 1850 1900 1950 200010

0

101

102

103

1750 1800 1850 1900 1950 2000 205010

0

101

102

103

Page 7: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

7

___________________________________________________________________________

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.

1800 1850 1900 1950 2000

101

102

Page 8: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

8

___________________________________________________________________________

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>

Page 9: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

9

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

Page 10: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

10

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.

Pomodu kursora obeležavamo tačke

preseka dve krive. Rešenje se ispisuje u

Komandnom prozoru.

Page 11: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

11

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 =

Page 12: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

12

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

Page 13: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

13

Primer 10: Primena funkcije waterfall

>> [x,y,z]=peaks;

>> waterfall(x,y,z),title('waterfall')

Page 14: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

14

Primer 11: Primena funkcije contour

>> [x,y,z]=peaks;

>> contour(x,y,z),title('contour')

Page 15: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

15

5. UC ITAVANJE 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.

Page 16: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

16

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

Page 17: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

17

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

Page 18: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

18

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

Page 19: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

19

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

podaci

bilo koji karakter

load numerički podaci samo razmak

textread slovni i numerički

podaci

bilo koji karakter

Page 20: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

20

textscan slovni i numerički

podaci

bilo koji karakter

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:

1 2 3 4 5

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

Page 21: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

21

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:

Page 22: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

22

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

Page 23: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

23

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

Page 24: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

24

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

Page 25: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

25

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]}

Page 26: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

26

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

Page 27: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

27

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

Page 28: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

28

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:

Page 29: Osnove biomedicinskog softvera

Osnove biomedicinskog softvera

2012/2013

29

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