You are on page 1of 24

Signali i sistemi Uputstvo za orienje Matlab-a

MATLAB KRATKO UPUTSTVO ZA KORIENJE

Matlab je programski paket koji je poeo da se razvija jo 80tih godina i na tritu su se do danas
pojavile brojne verzije ovog programa. Razliite verzije se uglavnom razlikuju po broju
raspoloivih funkcija, sistemskim ogranienjima, grafikom interfejsu kao i po operativnom sistemu
pod kojim su implementirane. S obzirom na veliki broj raspoloivih funkcija, one su grupisane u
posebne pakete (takozvane Toolboxove), koji se mogu dobiti uz osnovnu verziju programa, ali se
postoje i paketi koji se posebno nabavljaju. Tako postoje Signal Processing Toolbox, Control
System Toolbox i mnogi drugi.
Osnovni elementi svih verzija Matlab-a su jednaki. Kada se jednom naui nain na koji se u
Matlab-u predstavljaju podaci, sprovode osnovne raunske operacije i programiraju sopstvene
funkcije, prelazak sa jedne verzije programa na drugu ne predstavlja nikakav problem. Zbog toga e
se u ovom tekstu izloiti osnovi korienja Matlab-a i predstavie se osnovne komande i funkcije,
nakon ega je lako realizovati neke nove i sloenije operacije.

1. Osnovni elementi Matlab-a

Po startovanju programa otvara se komandni prozor i pojavljuje se simbol >>, koji se naziva
prompt, a koji oznaava da je Matlab spreman da prihvati podatke ili naredbe. Tekst u
komandnom prozoru se brie naredbom clc.
Osnovni objekt u Matlab-u je matrica dimenzija mn, a sve elementarne operacije su tako
definisane da podravaju rad sa matricama. Time je omogueno da se sve matematike i logike
operacije, kao i iskazi u Matlab-u definiu i izvode na isti nain kao to bi ih pisali na papiru.
Vektori su posebni sluajevi matrica 1n ili n1, dok su skalarne veliine poseban sluaj matrice
1x1.

Unoenje podataka pomou tastature


Postoji vie naina za unoenje podataka koje treba obraditi:
pomou tastature,
generisanjem pomou posebnih funkcija,
uitavanjem iz fajla,
kao rezultat neke prethodne operacije.
Pretpostavimo da u Matlab treba uneti vrednost skalarne promenljive x = 5 . To se moe uraditi na
sledei nain. Kada se pojavi prompt >>, ukucavanjem:
>> x=5;
vrednost promenljive x se smeta u radnu memoriju Matlaba (Workspace) i moe se pozivati i
koristiti sve dok se:

29
Signali i sistemi Uputstvo za orienje Matlab-a

a) ne izae iz programa,
b) ne predefinie unoenjem neke druge vrednosti ili izvravanjem odreene operacije,
c) ne izbrie iz radne memorije komandom clear x,
d) komandom clear ne izbrie cela radna memorija.
Ukoliko se prilikom bilo kakvog dodeljivanja vrednosti promenljivoj izostavi znak ; ta promenljiva
e se jo i tampati na ekranu, tako da naredba:
>> x=5
daje kao rezultat na ekranu:
x =
5

Pretpostavimo sada da u Matlab treba uneti vrednost vektora b, koji ima sledee elemente [1 4 5 6
7 12.3]. To se moe uraditi na sledei nain:
>> b=[1 4 5 6 7 12.3];

Matrica A dimenzija 43, zadata kao:


1 7 8
9 2 11
A=
0 3 2.1

2.4 8 100
moe se uneti u memoriju na vie naina. Jedan od njih je:
>> A=[1 7 8; 9 2 11; 0 3 2.1; 2.4 8 100];
Matrica se moe zadati i unoenjem svakog elementa posebno:
>> A(1,1)=1; A(1,2)=7; A(1,3)=8; A(2,1)=9; A(2,2)=2; A(2,3)=11;
>> A(3,1)=0; A(3,2)=3; A(3,3)=2.1; A(4,1)=2.4; A(4,2)=8; A(4,3)=100;
Takoe, matrica se moe uneti zadavanjem vrsta ili kolona
>> A(1,:)=[1 7 8];A(2,:)=[9 2 11];A(3,:)=[0 3 2.1];A(4,:)=[2.4 8 100];
>> A(:,1)=[1 9 0 2.4];A(:,2)=[7 2 3 8];A(:,3)=[8 11 2.1 100];

Osnovne operacije u Matlab-u


Matrice se mogu generisati i kao rezultat osnovnih aritmetikih ili logikih operacija. Na primer,
ako se poe od ve zadate matrice A, kucanjem:
>> C=A';

dobija se transponovana matrica C, poto je ' operator za transpoziciju1.


U sledeoj tabeli su prikazane elementarne matematike operacije nad matricama u Matlab-u:

1 Ukoliko matrica sadri kompleksne brojeve operator ' e istovremeno sa transponovanjem vriti i konjugovanje
kompleksnih brojeva. U ovom sluaju ukoliko je potrebno samo izvriti transponovanje matrice koristi se operator .'

30
Signali i sistemi Uputstvo za orienje Matlab-a

Operacija Simbol Primer


sabiranje + >> B = A+C;
oduzimanje - >> B = A-C;
sabiranje + >> B = A+C;
deljenje / >> y = 1/x;
stepenovanje y x ^ >> z = y^x;
mnoenje matrica * >> D = D*E; po pravilima matrinog mnoenja
Ukoliko su matrice neodgovarajuih dimenzija, program prijavljuje greku. Na primer, kucanjem
naredbe:
>> [3 1]*[2 3];
pojavie se poruka
??? Error using ==> mtimes
Inner matrix dimensions must agree.
U optem sluaju, ako se operator . stavi ispred simbola neke matematike operacije, time se
oznaava da se ta operacija sprovodi izmeu odgovarajuih elemenata matrica. Tako je:
>> D = D.*E mnoenje matrica element po element
>> F = D.^E stepenovanje svih elemenata matrice D odgovarajuim elementom matrice E
>> F = D./E deljenje svakog elemenata matrice D odgovarajuim elementom matrice E
dok je:
>> F=D\E deljenje matrica D i E sleva, odnosno F = D E 1
>> F=D/E deljenje matrica D i E sdesna, odnosno F = D 1 E

Osnovne matematike funkcije u Matlab-u


U Matlab-u je implementiran izvestan broj elementarnih matematikih funkcija, meu kojima su
najvanije prikazane u Tabeli 1. Ove funkcije daju skalarne vrednosti ako im je argument skalarna
veliina, a ako je argument vektor ili matrica, operacija se primenjuje na svaki element vektora ili
matrice. Detaljno objanjenje na koji nain se svaka funkcija koristi moe se dobiti naredbom help
ime_funkcije, na primer, help abs.

Kompleksni brojevi u Matlab-u


Znaajnih prednost Matlab-a je injenica da ovaj programski paket radi sa kompleksnim brojevima.
Imaginarna jedinica j = 1 je u Matlab-u definisana kao permanentna veliina, a zbog
fleksibilnosti u radu dodeljena su joj dva simbola, i i j, tako da je
>> i = sqrt(-1);

odnosno
>> j = sqrt(-1);

31
Signali i sistemi Uputstvo za orienje Matlab-a

Isto tako, korisnik moe vrednost sqrt(-1) dodeliti proizvoljnoj promenljivoj, koju moe u daljem
radu koristi kao imaginarnu jedinicu, npr:
>> nova_im_jed = sqrt(-1);

Tabela 1: Elementarne matematike funkcije.

Sin (cos) sinus (kosinus) sqrt kvadratni koren

tan tangens abs apsolutna vrednost

Asin (acos) inverzni sinus (kosinus) Real (imag) realni (imaginarni) deo

atan inverzni tangens conj konjugovani broj

Sinh (cosh) inverzni hiperboliki sinus (kosinus) fix zaokruivanje ka nuli

tanh hiperboliki tangens floor zaokruivanje prema -

exp ex ceil zaokruivanje prema +

log prirodni logaritam sign signum funkcija

log10 logaritam sa osnovom 10 rem ostatak pri deljenju

Kompleksni brojevi se u Matlab-u zadaju isto kao to bi se napisali na papiru:


>> z = 2+3*j;
>> q = 72.1*j;
i nad njima se po pravilima kompleksnog rauna mogu izvoditi sve do sada pomenute operacije:
>> x = z+q;
>> x1 = zq;
>> x2 = x*x1;
>> x_realno = real(x); realni deo kompleksnog broja
>> x_imag = imag(x); imaginarni deo kompleksnog broja
Kompleksna promenljiva se moe zadati i preko modula i argumenta u sledeem obliku:
>> z = r*exp(j*teta);
tako da se unoenjem:
>> r = 2;
>> teta = 0.5;
>> z = r*exp(j*teta)
dobija rezultat:
z =
1.7552 + 0.9589i
Kompleksne matrice se unose na isti nain kao i matrice sa realnim elementima, ili unoenjem
realnog i imaginarnog dela posebno (zadavanjem dve matrice).

32
Signali i sistemi Uputstvo za orienje Matlab-a

Automatsko generisanje nekih specijalnih matrica u Matlab-u


Za formiranje matrica specijalne strukture, u Matlab-u postoje posebne naredbe: ones, zeros, eye.
Tako se npr. naredbom:
>> A = zeros(2,3);

generie matrica A, koja ima dve vrste i tri kolone, a iji su svi elementi jednaki nuli. Isto tako:
>> B = ones(4,2);

generie matricu B, dimenzija 42, kod koje su svi elementi jednaki jedinici, dok se naredbom:
>> I = eye(7);

dobija jedinina matrica I, dimenzija 77. Navedene naredbe se esto primenjuju u radu, jer
omoguavaju lako generisanje osnovnih signala koji se koriste u analizi diskretnih sistema. Tako se,
na primer, pravougaoni impuls trajanja 10 odbiraka moe generisati naredbom:
>> prav_impuls = [zeros(1,10) ones(1,10) zeros(1,10)];

a povorka od 5 takvih pravougaonih impulsa, amplitude 2, generie se naredbama:


>> impuls = 2*[ones(1,5) zeros(1,10)];
>> povorka = [impuls impuls impuls impuls impuls];
Za automatsko generisanje vektora veoma esto se koristi operator :. Tako se kucanjem:
>> x = 3:8

dobija:
x =
3 4 5 6 7 8
odnosno, generie se vektor-vrsta koji sadri elemente od 3 do 8. Opti oblik ove naredbe je
x = xmin:xkorak:xmax. Na taj nain se generie vektor x koji kao elemente ima brojeve od xmin
do xmax sa korakom xkorak. Ako je xkorak negativan broj, a xmin vee od xmax dobija se vektor sa
elementima u opadajuem redosledu.

Ugraene vrednosti u Matlab-u


Osim imaginarne jedinice, u Matlab-u postoje jo neke ugraene vrednosti. Na primer, broj je
definisan kao promenljiva pi koja se u radu koristi kao i ostale promenljive. Tako se kucanjem:
>> pi
dobija na ekranu:
ans =
3.14159265358979
ili:
>> y = cos(pi/3)
daje kao rezultat:
y =
0.50000000000000

33
Signali i sistemi Uputstvo za orienje Matlab-a

Posebna pogodnost Matlab-a su i veliine Inf i NaN. Veliina Inf je skraenica od engleske rei
infinity (beskonano) i moe se generisati nekom od naredbi tipa:
>> x = 1/0

nakon ega se na ekranu dobija sledea poruka:


Warning: Divide by zero
x =
Inf
Ova i sline naredbe ne izazivaju prekid u radu (osim to se na ekranu dobija poruka upozorenja), a
veliina Inf se u daljem raunanju tretira kao i sve druge vrednosti. Veliina NaN potie od
engleskog izraza not a number i moe se generisati operacijama Inf/Inf ili 0/0. Ona se korisno
moe upotrebiti za odreivanje vrednosti funkcija iji je argument izvan opsega dozvoljenih
vrednosti, kao to je, na primer, vrednost diskretnog signala za necelobrojnu vrednost indeksa.

Funkcije za pomo u Matlab-u


Verovatno najee koriena funkcija u Matlab-u je help. Kako je broj funkcija u Matlab-u
izuzetno veliki, a mnoge imaju i vie varijanti, nemogue je znati sintaksu i namenu svake od njih,
pa naredbu help esto upotrebljavaju i iskusni programeri. Na primer, ako je potrebno upoznati se
sa naredbom max (koja odreuje maksimalnu vrednost elementa nekog vektora), kucanje:
>> help max

daje sledeu poruku na ekranu:


MAX Largest component.
For vectors, MAX(X) is the largest element in X. For matrices,
MAX(X) is a row vector containing the maximum element from each
column. For N-D arrays, MAX(X) operates along the first
non-singleton dimension.

[Y,I] = MAX(X) returns the indices of the maximum values in vector I.


If the values along the first non-singleton dimension contain more
than one maximal element, the index of the first one is returned.

MAX(X,Y) returns an array the same size as X and Y with the


largest elements taken from X or Y. Either one can be a scalar.

[Y,I] = MAX(X,[],DIM) operates along the dimension DIM.

When complex, the magnitude MAX(ABS(X)) is used, and the angle


ANGLE(X) is ignored. NaN's are ignored when computing the maximum.

Example: If X = [2 8 4 then max(X,[],1) is [7 8 9],


7 3 9]

max(X,[],2) is [8 and max(X,5) is [5 8 5


9], 7 5 9].

See also min, median, mean, sort.

34
Signali i sistemi Uputstvo za orienje Matlab-a

Jo jedna dobra strana naredbe help je to daje i spisak srodnih funkcija, to olakava rad.
Za informaciju o zauzeu radne memorije Matlab-a i promenljivima koje postoje, koriste se naredbe
who i whos. Naredba who daje spisak promenljivih koje su u radnoj memoriji, dok whos daje jo i
podatak o koliini memorije koju zauzima svaka promenljiva i veliini preostale slobodne radne
memorije. Ove naredbe se koriste u sluaju rada sa velikim blokovima podataka (dugakim
vektorima ili matricama velikih dimenzija), kada zauzee memorije postaje kritian faktor.
Za ilustraciju razliitih mogunosti paketa Matlab, postoji naredba demo. Kucanjem ove naredbe na
ekranu e se pojaviti meni sa izborom razliitih demonstracionih programa.
Za odreivanje dimenzija pojedinih promenljivih postoje naredbe length i size. Naredba length
daje broj elemenata odreenog vektora. Tako na primer, kucanjem:
>> x = 0:0.1:1; nx = length(x)

dobijamo na ekranu vrednost promenljive nx koja predstavlja broj elemenata vektora x, kao:
nx =
11
Naredba size slui za odreivanje dimenzija matrice. Ona kao izlaz daje vektor sa dva elementa.
Prvi element vektora je broj vrsta u matrici a drugi je broj kolona. Tako na primer, ako u radnoj
memoriji postoji matrica A veliine 23, kucanjem:
>> dim = size(A);

dobijamo vektor dim koji je jednak [2 3]. Odnosno, kucanjem:


>> [x,y] = size(A)

promenljivima x i y dodeljujemo vrednosti 2 i 3.

2. Grafiki prikaz podataka u Matlab-u

Odline grafike mogunosti su jedna od najboljih osobina Matlab-a, obzirom da postoji veliki broj
naredbi koje omoguavaju crtanje podataka u dve ili tri dimenzije. Osim toga, Matlab omoguava
uvanje dobijenih grafika u mnogobrojnim standardnim formatima. Na taj nain se slike
napravljene u Matlab-u mogu koristiti u drugim programskim paketima.

Grafike komande
Prozor za crtanje grafika se otvara naredbom figure, a zatvara (brie) naredbom close. Naredba
close all zatvara sve otvorene prozore.
Grafik se brie bez zatvaranja prozora naredbom clf. Zadavanjem bilo koje od naredbi za crtanje
(plot, stem, i sl.), prethodni grafik se brie i u tekuem prozoru se crta novi grafik. Ukoliko elimo
da se stari grafik zadri, a da se preko njega crtaju novi, koristi se naredba hold on. Ova naredba se
ponitava sa hold off.

35
Signali i sistemi Uputstvo za orienje Matlab-a

Naredba plot
Jedna od najee korienih naredbi za prikaz podataka je plot. Naredba plot ima veliki broj
opcija te e se u daljem izlaganju njena upotreba ilustrovati primerima, a opirniji prikaz se moe
dobiti kucanjem help plot.
Primer 1. Nacrtati funkciju y = x 2 na intervalu 2 do 2.
Crtanje odgovarajueg grafika izvodi se sa sledee tri naredbe:
>> x = -2:0.01:2;
>> y = x.^2;
>> plot(x,y)
4

3.5

2.5

1.5

0.5

0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Slika 5.1. Grafiki prikaz funkcije y = x 2 pomou naredbe plot

Kao to se moe videti, na grafiku je izvren automatski izbor opsega po obe ose.

Primer 2. Nacrtati funkcije y = x 2 , z = x 3 i w = x 4 na intervalu 2 do 2.


Ukoliko je potrebno, na istoj slici se moe nacrtati vie dijagrama. Na primer, tri traene krive
mogu se generisati i prikazati na istoj slici sledeim skupom naredbi:
20

15

>> x = -2:0.01:2;
10
>> y = x.^2;
>> z = x.^3;
5
>> w = x.^4;
>> plot(x,y,x,z,x,w) 0

-5

-10
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Slika 5.2. Grafiki prikaz funkcija y = x 2 ,


z = x 3 i w = x 4 pomou naredbe plot

36
Signali i sistemi Uputstvo za orienje Matlab-a

Na prethodnoj slici su tri krive prikazane razliitim bojama. Boja krive, simboli kojima su oznaene
izraunate take (markeri), kao i tip linije koja spaja take, mogu se izabrati tako to se u naredbi
plot pored nezavisne i zavisne promenljive za svaku krivu zadaju jo najvie tri simbola 'mnp' s
sledeim znaenjem:
m boja linije n - marker taaka p - vrsta linije
b - plava . - taka - - puna linija
g - zelena o - krui : - takasta linija
r - crvena x - znak x -. - taka-crtica
c - cijan (plavo-zelena) + - znak + -- - crtice
m - magenta (ljubiasta) * - zvezdica nita - nema linije
y - uta s - kvadrati
b - crna d - dijamant
v - trougao na dole
^ - trougao na gore
< - trougao na levo
> - trougao na desno
p - petougao
h - estougao

Na primer, naredba plot(x,y,'g+:') nacrtae krivu y zelenom bojom, take e biti oznaene
plusevima i bie spojene takastom linijom. Prilikom crtanja se koristi linearna interpolacija izmeu
postojeih taaka.
Ako boja krive nije eksplicitno specificirana, onda se boja krive odreuje po redosledu crtanja kao:
plava, zelena, crvena, cijan, magenta, uta, crna. Ako nije specificiran marker, onda se take ne
oznaavaju. Ako nije specificirana vrsta linije, onda se crta puna linija.
Ako u naredbi plot postoji samo jedan argument, to znai da e se vrednosti tog vektora nanositi
na ordinatu. U tom sluaju se na apcisu nanose indeksi elemenata u vektoru.
Primer 3. Nacrtati vektor podataka x = [1 7 4.3 2 9 11 8 9]. Vrednosti podataka oznaiti
kruiima, a take spojiti isprekidanom crvenom linijom.
Vektor x zadaje se i crta na sledei nain:
>> x = [1 7 4.3 2 9 11 8 9];
>> plot(x,'ro--')

Primer 4.
Nacrtati funkciju y = sin( x) za vrednosti argumenta u opsegu 4 x 4 . Krivu nacrtati
punom ljubiastom linijom, a vrednosti taaka ne oznaavati.
Traeno reenje je:
>> x = -4*pi:pi/100:4*pi;
>> y = sin(x);
>> plot(x,y,'m')

37
Signali i sistemi Uputstvo za orienje Matlab-a

11

10

1
1 2 3 4 5 6 7 8

Slika 5.3. Grafiki prikaz vektora x pomou naredbe plot

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-15 -10 -5 0 5 10 15

Slika 5.4. Grafiki prikaz funkcije y = sin( x) pomou naredbe plot

Naredba stem
Naredba za grafiki prikaz diskretnih podataka je stem, koja prikazuje diskretne podatke tako da od
svake take izvlai vertikalnu liniju do x ose. Slino naredbi plot i naredba stem ima mnogo
opcija, pa e u daljem izlaganju i njena upotreba biti ilustrovana kroz primere, dok se detaljniji
prikaz njenih mogunosti moe dobiti kucanjem help stem. Osnovna verzija naredbe stem:
>> stem (x)

crta vektor x u funkciji indeksa elemenata vektora. Kao marker diskretnih taaka koristi se krui.
U sloenijim verzijama, kao to je stem(x,y,'mnp') specificiraju se koordinate taaka po obe ose,
boja i tip linija, izgled markera. Znaenje parametara 'mnp' isto je kao kod naredbe plot.

38
Signali i sistemi Uputstvo za orienje Matlab-a

Primer 5. Nacrtati vektor podataka x = [1 7 4.3 2 9 11 8 9] pomou naredbe stem.


Vektor x zadaje se i crta na sledei nain:
>> x = [1 7 4.3 2 9 11 8 9];
>> stem(x)
12

10

0
1 2 3 4 5 6 7 8

Slika 5.5. Grafiki prikaz vektora x pomou naredbe stem

Primer 6. Nacrtati diskretnu eksponencijalnu funkciju y = e an za a = 0.5 i 0 n 10 pomou


naredbe stem.
Funkcija se crta pomou sledeih naredbi. Opcija 'filled' izaziva popunjavanje kruia.
>> n = 0:1:10;
>> y = exp(-0.5*n);
>> stem(n,y,'filled')
1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
0 1 2 3 4 5 6 7 8 9 10

Slika 5.6. Grafiki prikaz diskretne eksponencijalne funkcije y = e an pomou naredbe stem

39
Signali i sistemi Uputstvo za orienje Matlab-a

Oznaavanje osa i grafika


Oznaavanje grafika i osa, obavlja se u Matlab-u naredbama title, xlabel i ylabel. Upotreba
ovih naredbi moe se ilustrovati sledeim primerom:
Primer 7. Nacrtati funkciju y = sin( x) za vrednosti argumenta u opsegu 4 x 4 . Krivu nacrtati
punom plavom linijom, a vrednosti taaka ne oznaavati. Ispisati naziv grafika i oznaiti
koordinatne ose.
Za reavanje ovog problema mogu se iskoristiti naredbe napisane u Primeru 4, kojima treba dodati
naredbe za ispisivanje naziva i oznaavanje koordinatnih osa:
>> x = -4*pi:pi/100:4*pi;
>> y = sin(x);
>> plot(x,y,'b')
>> title('Grafik funkcije y = sin(x)')
>> xlabel('Vrednosti promenljive x')
>> xlabel('Vrednosti funkcije y=sin(x)')
Grafik funkcije y = sin(x)
1

0.8

0.6
Vrednosti funkcije y = sin(x)

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-15 -10 -5 0 5 10 15
Vrednosti promenljive x

Slika 5.7. Grafiki prikaz funkcije y = sin( x) pomou naredbe plot sa oznaavanjem osa i naslovom

Grafici sa logaritamskom podelom


Grafici sa logaritamskom podelom po x osi, odnosno po y osi ili sa logaritamskom podelom na obe
ose, mogu se dobiti naredbama semilogx, semilogy i loglog. Prilikom crtanja grafika korienjem
naredbi semilogx i loglog, potrebno je generisati nezavisno promenljivu x u logaritamskoj
razmeri, to se postie naredbom logspace.
Primer 8. Nacrtati funkciju y = 1/( x3 + x 2 x + 1) za vrednosti argumenta u opsegu 0.1 x 10 sa
logaritamskom razmerom po x osi i po obe ose.
Funkcija y(x) se crta u logaritamskoj razmeri (samo po x osi) pomou naredbi:
>> x=logspace(-1,1,256);
>> y=1./(x.^3+x.^2-x+1);

40
Signali i sistemi Uputstvo za orienje Matlab-a

>> semilogx(x,y)

dok se u sluaju crtanja u logaritamskoj razmeri po obe ose koristi se naredba loglog(x,y).
>> loglog(x,y)

Traeni grafici su prikazani na slici 5.8.


1
1.4 10

1.2
0
10

-1
10
0.8

0.6 -2
10

0.4
-3
10
0.2

-4
0 10
-1 0 1 -1 0 1
10 10 10 10 10 10

Slika 5.8. Grafiki prikaz funkcije y = 1/( x3 + x 2 x + 1) u logaritamskoj razmeri po x osi i po obe ose

Skaliranje osa
Prilikom crtanja grafika, opseg vrednosti na apcisi i ordinati odreuje se automatski, na osnovu
minimalne i maksimalne vrednosti promenljivih koje se zadaju u naredbi za crtanje (plot,
semilogx, itd.). Ukoliko je potrebno nacrtati samo deo celokupnog opsega, koristi se naredba axis.
Ulazni argument je vektor [xmin xmax ymin ymax] kojim se zadaje opseg za crtanje po x i y osi.
Primer 9. Izraunati funkciju y = sin( x) za vrednosti argumenta u opsegu 4 x 4 , a nacrtati
grafik za samo jedan period sinusoide.
Traeno reenje je:
>> x = -4*pi:pi/100:4*pi;
>> y = sin(x);
>> plot(x,y)
>> axis([0 2*pi -1 1]);

Dobijeni grafici su prikazani na slici 5.9.


Od interesa su i sledee varijante naredbe axis:
axis manual - zamrzava tekue granice [xmin xmax ymin ymax]. Ako je pri tome
aktivirana naredba hold on, svi naredni grafici e koristiti iste granice. Automatsko
odreivanje granica za crtanje se vraa naredbom axis auto,
axis off - ukida oznaavanje i obeleavanje po osama. axis on vraa ukinuto
oznaavanje za sledee grafike,
v = axis daje kao rezultat trenutno vaei vektor [xmin xmax ymin ymax],

41
Signali i sistemi Uputstvo za orienje Matlab-a

axis equal izaziva da inkrementi po svim osama budu jednaki, tako da krug izgleda kao
krug a ne elipsa, a lopta izgleda kao lopta a ne elipsoid.

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6

Slika5. 9. Grafiki prikaz jednog perioda funkcije y = sin( x) pomou naredbe plot

Crtanje vie grafika na ekranu


U dosadanjim primerima grafici su prikazivani u celom prozoru. Meutim, u Matlab-u postoji
mogunost crtanja vie razliitih grafika u jednom prozoru, za ta se koristi naredba subplot, koja
se navodi pre naredbe za crtanje. Opti oblik ove naredbe je subplot(m,n,p) ili subplot(mnp),
to znai da e se ekran podeliti na m delova po horizontali, n delova po vertikali i tekui grafik e
se nacrtati na p-tom delu. Redosled grafika se odreuje sa leva na desno, odozgo na dole. Na Slici
5.10. je ilustrovano na koji nain se koristi subplot da bi se ostvarile razliite podele ekrana.

subplot(221) subplot(222) subplot(211)


subplot(211)

subplot(121) subplot(122)

subplot(223) subplot(224) subplot(212)

Slika 5.10. Korienje naredbe subplot za podelu ekrana prilikom crtanja grafika

Ukoliko se ne zada naredba subplot, grafik se crta preko celog prozora. Isto tako, podela ekrana
zadata poslednjom naredbom subplot, ostaje i prilikom crtanja sledeih grafika, sve dok se ne
promeni sledeom subplot naredbom.
Primer 10. Izraunati diskretnu funkciju y = 5e( 0.1+ j 5 / 9) n za vrednosti argumenta u opsegu 0 n 20
i nacrtati grafike njenog realnog i imaginarnog dela u istom prozoru.

42
Signali i sistemi Uputstvo za orienje Matlab-a

Traeno reenje se dobija naredbama:


>> n=0:1:20;
>> y = 5*exp((-0.1+j*5*pi/9)*n);
>> ry = real(y);
>> iy = imag(y);
>> subplot (2,1,1), stem(n,ry);
>> title('Realni deo');
>> subplot (2,1,2), stem(n,iy);
>> title('Imaginarni deo');
Realni deo
6

-2

-4
0 2 4 6 8 10 12 14 16 18 20

Imaginarni deo
6

-2

-4
0 2 4 6 8 10 12 14 16 18 20

Slika 5.11. Grafiki prikaz realnog i imaginarnog dela diskretne funkcije y = 5e( 0.1+ j 5 / 9) n

Ostale naredbe za crtanje


Za postavljanje grafika u prozoru na poziciju odreenu vrednou vektora
RECT=[left,bottom,width,height] koristi se naredba:

>> axes('position',RECT)

Pri tome, taka (0,0) odgovara donjem levom uglu, a taka (1,1) odgovara gornjem desnom uglu
grafika.
Naredba:
>> grid on

crta mreu isprekidanih linija paralelnu koordinatnim osama. Mrea se brie naredbom:
>> grid off

Naredba:
>> zoom on

omoguava uveanje ili smanjenje razmere crtea pritiskom na levo ili deso dugme mia. Zumiranje
se ukida naredbom:

43
Signali i sistemi Uputstvo za orienje Matlab-a

>> zoom off

Naravno grafici se mogu zumirati korienjem standardnih opcija za uveanje ili smanjenje razmere
u okviru prozora slike.
Osim dosad opisanih naredbi, koje se najee koriste u radu, u Matlab-u postoje i druge
mogunosti za prikaz podataka. Neke vanije naredbe za crtanje dvodimenzionalnih i
trodimenzionalnih grafika su date u Tabeli 2. Detaljnija uputstva za njihovo korienje mogu se
dobiti korienjem komande help.
Tabela 2: Neke od vanijih naredbi za crtanje 2D i 3D grafika.

polar crtanje u polarnom koordinatnom sistemu

hist crtanje histograma

bar, stairs crtanje stepeniastih grafika

mesh crtanje trodimenzionalnih grafika

contour crtanje konturnih preseka

plot3 crtanje linija i taaka u trodimenzionalnom prostoru

Zapisivanje grafika u fajl


Grafik koji se trenutno nalazi na ekranu moe se zapisati u fajl na vie naina. Jedan od naina je da
se u prozoru slike levim dugmetom mia odabere opcija File a zatim na Save as i izabere ime
fajla i format fajla u kome e slika biti zapisana. Na raspolaganju je veliki broj raspoloivih
standardnih formata, pri emu bi trebalo izabrati neki format koji komprimuje sliku bez gubitaka,
kao to su png i tif formati grafikih podataka.
Drugi nain zapisa je prebacivanje slike u privremenu memoriju (clipboard), a iz nje u neki drugi
grafiki program ili u program za obradu teksta. Ova operacija se vri tako to se u prozoru slike
levim dugmetom mia klikne na opciju Edit a zatim na Copy Figure.
Trei nain zapisa je korienjem naredbe print u komandnom prozoru. Jedan od oblika ove
naredbe je:
>> print <format> <ime fajla>

Tako e se, na primer, naredbom:


>> print -dmeta slika.met

tekui grafik zapisati u datoteku slika.met kao Windows meta fajl, ili sa opcijom -dbitmap
tekui grafik e se zapisati u datoteku slika.bmp u bitmap formatu. Detaljno uputstvo za korienje
ove naredbe kao i spisak svih moguih opcija dobija se sa help print. Ovaj nain zapisa je
pogodan kada je u programu potrebno generisati vei broj grafika i zapisati ih u odgovarajue
fajlove. Prethodna dva naina bi zahtevala suvie manuelnog rada za zapis slika.

44
Signali i sistemi Uputstvo za orienje Matlab-a

3. Programiranje u Matlab-u

U dosadanjem izlaganju, sve operacije su unoene u komandnoj liniji (to je oznaavano sa >>) i
izvravale posle pritiska na tipku Enter ili Return. Meutim, prilikom korienja Matlab-a za
reavanje sloenih problema, ovakav nain izvravanja programa postaje nepraktian i spor. U
takvim sluajevima korisnik bi trebalo da napie sopstveni program, ili da kreira sopstvene funkcije,
to je takoe podrano u Matlab-u.

Pisanje programa u Matlab-u


Kada je potrebno vie naredbi objediniti u jednu celinu koja e se esto izvravati, poeljno je
napisati program (skriptu) i startovati ga iz komandne linije sa:
>> ime_programa
Program se pie u editoru koji je deo Matlab programa (mada moe i u nekom od editora teksta koji
su dostupni u operativnom sistemu koji se koristi - Notepad, UltraEdit...). Ime datoteke u kojoj se
nalazi program moe biti proizvoljno, ali ekstenzija mora biti .m, dakle, kompletan naziv programa
je ime_programa.m. Na taj nain Matlab prepoznaje da se radi o korisnikom programu ili
funkciji, zbog ega se obino te datoteke nazivaju jo i mfajlovi.
Prilikom pisanja programa poeljno je to ee koristiti komentare. Linija (ili deo linije) u
programu, koja predstavlja komentar, poinje znakom %.
Postupak pisanja programa, moe se jednostavno ilustrovati na sledeem primeru.

Primer 10. Napisati program za crtanje grafika funkcije y = x 2 na intervalu 2 do 2 i sauvati ga u


datoteci crtez.m.
% Program za crtanje funkcije y=x*x na intervalu 2<x<2
x = -2:0.01:2; % generise se nezavisno promenljiva x
y = x.^2; % izracunava se zavisno promenljiva y
plot(x,y) % crta se funkcija
title('Grafik funkcije y=x*x, na intervalu 2<x<2')
xlabel('Nezavisno promenljiva x')
ylabel('y')
Iz komandnog prozora Matlab-a, program se startuje kucanjem u komandnoj liniji:
>> crtez
ime se dobija grafika sa slike 5.12.
Unoenje promenljivih u program sa tastature
Unos vrednosti sa tastature u toku rada programa omoguen je naredbom input. Korienje
ove naredbe najlake se moe objasniti na sledeem primeru.
Primer 12. Napisati program kojim e se nacrtati funkcija y = x 2 na intervalu a do b. Vrednosti a, b
i koraka izmeu dve susedne vrednosti nezavisne promenljive treba uitati sa tastature, a program
sauvati u datoteci crtez1.m.

45
Signali i sistemi Uputstvo za orienje Matlab-a

Grafik funkcije y=x*x, na intervalu 2<x<2


4

3.5

2.5

y
1.5

0.5

0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
Nezavisno promenljiva x

Slika 5.12. Rezultat programa crtez


Traeni program crtez1.m izgleda ovako:
% Program za crtanje funkcije y=x*x na proizvoljnom intervalu a<x<b
a = input('Pocetak intervala (a): '); % unosi se a sa tastature
b = input('Kraj intervala (b): '); % unosi se b sa tastature
korak = input('korak iznosi: '); % unosi se korak sa tastature
x = a:korak:b; % generise se nezavisno
promenljiva x
y = x.^2; % izracunava se zavisno
promenljiva y
plot(x,y) % crta se funkcija
title(['Grafik funkcije y=x*x, na intervalu ' num2str(a) ' < x < '
num2str(b)]);
xlabel('Nezavisno promenljiva x'); ylabel('y')
Funkcija num2str(a) pretvara broj a u niz alfanumerikih simbola koji se jedino mogu koristiti u
naredbi title.
Grafik funkcije y=x*x, na intervalu -3 < x < 5
25

20

15
y

10

0
-3 -2 -1 0 1 2 3 4 5
Nezavisno promenljiva x

Slika 5.13. Rezultat programa crtez1 za vrednosti parametara a = -3 i b = 5

46
Signali i sistemi Uputstvo za orienje Matlab-a

Funkcije za upravljanje tokom programa


Kao i u drugim programskim jezicima, i u Matlab-u postoje uobiajene funkcije za upravljanje
tokom programa kao to su for, if, while, return, i sl. Njihova sintaksa je ista, ili vrlo slina,
sintaksi koja se koristi u programskim jezicima C i C++.
FOR petlja
Opti oblik naredbe for je:
for promenljiva = a:inkrement:b,
{ blok naredbi
end

Blok naredbi unutar for petlje e se izvravati dok promenljiva uzima vrednosti od a do b sa
korakom koji je zadat vrednou inkrement.
Primer 13. Napisati program koji generie matricu A, dimenzija nm, iji su elementi A(i, j ) = 2i + j .
Dimenzije matrice n i m treba uitati sa tastature.
Reenje ovog primera je:
n = input('Broj vrsta (n) je:');
m = input('Broj kolona (m) je:');
for i=1:n,
for j=1:m,
A(i,j)=2^(i+j);
end
end

IF naredba
Naredba if je takoe implementirana u Matlab-u. Opti oblik ove naredbe je:
if izraz,
{ blok naredbi
end

Blok naredbi unutar if naredbe se izvrava ako je izraz razliit od nule. Prilikom definisanja
promenljive izraz, kao uslova za izvravanje, koriste se logike i relacione operacije definisane u
Tabeli 3. Dozvoljeno je i viestruko grananje, kada se koristi kontrolna struktura if else end, kao
u sledeem primeru.
Primer 14. Napisati program koji ispituje parnost brojeva. Izlazna promenljiva par je jednaka 0 ako
je broj negativan; jednaka 1, ako je broj pozitivan i neparan; i jednaka 2, ako je broj pozitivan i
paran.
Reenje ovog primera je:
if n < 0
par = 0;
elseif rem(n,2) == 0
par = 2;
else

47
Signali i sistemi Uputstvo za orienje Matlab-a

par= 1;
end

WHILE petlja
Opti oblik naredbe while je:
while izraz,
{ blok naredbi
end

Blok naredbi unutar while petlje e se izvravati dok je izraz razliit od nule. Prilikom definisanja
izraza, kao dela while petlje, mogu da se koriste razliite logike i relacione operacije date u
Tabeli 3.
Primer 15. Napisati program koji za zadato k (uitano sa tastature) izraunava sumu: S = kn=11 n .
k = input('k iznosi:');
s = 0; n = 1;
while n <= k,
s = s+1/n;
n = n+1;
end

Tabela 3: Relacioni i logiki operatori i funkcije.

< manje

<= manje ili jednako

> vee

>= vee ili jednako

== jednako

~= razliito

& logiko i

| logiko ili

~ negacija

find u nizu (matrici) nalazi indekse koji zadovoljavaju odreenu relaciju

isnan nalazi NaNove u zadatom nizu ili matrici

finite u zadatom nizu (matrici) nalazi elemente koji su Inf

isempty nalazi prazne matrice (nizove)

48
Signali i sistemi Uputstvo za orienje Matlab-a

Pisanje funkcija u Matlab-u


Jedna od pogodnosti Matlab-a je to korisniku prua mogunost kreiranja sopstvenih funkcija. One
se u daljem radu tretiraju isto kao i funkcije koje su deo samog programa ili pripadaju nekom od
Toolboxova. Fajlovi koji sadre korisnike funkcije nazivaju se jo i funkcijski fajlovi i piu se na
isti nain kao i programi (skripte). Jedina razlika izmeu fajla koji sadri funkciju i fajla koji sadri
program (skriptu) jeste to to funkcijski fajl u prvoj liniji obavezno mora da sadri deklaraciju
funkcije koja poinje naredbom function. Pisanje korisnikih funkcija se moe ilustrovati na
sledeem primeru:
Primer 16. Napisati funkciju fakt, koja rauna faktorijel zadatog broja.
Oblik traene funkcije je y = fakt(n), gde je n ulazni argument (broj iji se faktorijel rauna), a
izlaz iz funkcije je izraunata vrednost faktorijela. Program koji realizuje funkciju fakt izgleda
ovako:
function y = fakt(n)
% Funkcija y = fakt(n), racuna faktorijel broja n i dodeljuje ga
% promenljivoj y. Ako je n<0 na ekranu se ispisuje poruka
% o greci, a promenljivoj y se ne dodeljuje nikakva vrednost.
if n<0,
disp(' Greska. Faktorijel negativnog broja nije definisan.')
y=[]; % y je prazan vektor
return % izlazak iz programa
end
y = 1; ind = n;
while (ind > 0),
y = y*ind;
ind = ind-1;
end
Nakon to se napie funkcijski fajl, on mora da se sauva pod imenom ime_funkcije.m. Dakle
funkcijski fajl mora da ima isto ime kao i funkcija koja je u njemu deklarisana. Nakon toga,
funkcija moe da se upotrebljava kao i sve druge funkcije ugraene u Matlab. Tako na primer,
kucanjem u komandnoj liniji:
>> fakt(5)
na ekranu se dobija:
ans =
120
ili sa:
>> z = fakt(3);

promenljivoj z se dodeljuje vrednost 6, bez ispisa na ekranu. Ukoliko se kao ulazni argument zada
broj koji je manji od nule (to ispituje if u programu) na ekranu e se pojaviti sledea poruka:
Greska. Faktorijel negativnog broja nije definisan.

to je ostvareno naredbom
disp(' Greska. Faktorijel negativnog broja nije definisan.').

49
Signali i sistemi Uputstvo za orienje Matlab-a

U optem sluaju, naredba disp na ekranu tampa tekst koji se nalazi izmeu dva znaka '. Ova
naredba moe da se iskoristi i za tampanje vrednosti neke promenljive. U tom sluaju se kao
argument navodi samo ime promenljive, npr. disp(z). U sluaju da se u komandnoj liniji Matlaba
otkuca help fakt, na ekranu e se dobiti komentar koji sledi posle deklaracije funkcije.

Efikasnost izvravanja programa u Matlab-u


Matlab pripada grupi interpreterskih programskih jezika. Kada se naredba unosi u komandnom
prozoru, ona se prvo interpretira a zatim izvrava. Ako se radi o programu, onda se naredbe redom
uitavaju, interpretiraju i izvravaju. Ukoliko u programu postoje petlje, svaka instrukcija u petlji se
u svakom prolazu uitava, interpretira i izvrava. U sluaju kada se radi sa velikim koliinama
podataka, kakav je sluaj u obradi govora ili slike, to moe ozbiljno poveati vreme izvrenja
programa. Stoga je od interesa razmotriti mehanizme za procenu sloenosti programa i naine za
popravljanje efikasnosti programa.
Merenje vremena izvravanja programa
Merenje vremena izvravanja programa, ili dela programa, u Matlab-u je omogueno korienjem
naredbi tic i toc. One se primenjuju na sledei nain:
tic
{ blok naredbi
toc

Prvom naredbom tic se aktivira merenje vremena (toperica). Druga naredba toc oitava sadraj
brojaa bez resetovanja. Resetovanje brojaa se vri novom naredbom tic. Naredba toc moe
imati i oblik t = toc, ime se omoguava pamenje prolaznih vremena tokom izvravanja nekog
sloenog programa
Primer 17. Generisati matricu sluajnih brojeva 100100, invertovati je i izmeriti vreme izvrenja
programa.
Reenje problema je:
tic
a = rand(100);
b = inv(a);
toc

Izvravanjem ovog programa dobija se na ekranu rezultat:


Elapsed time is 0.140000 seconds.

Poveanje efikasnosti izvravanja programa


Radi poveanja efikasnosti izvravanja programa, to je od ogromne vanosti kod realizacije
sloenih algoritama, potrebno je izbegavati upotrebu programskih petlji to je vie mogue. Da bi
ilustrovali potrebu za izbegavanjem programskih petlji posmatrajmo generisanje odbiraka diskretne
sinusoide pomou programa:
for t = 1:5000
y(t) = sin(2*pi*t/10);
end

50
Signali i sistemi Uputstvo za orienje Matlab-a

Merenjem vremena izvrenja ovog programa dobija se vreme od 0.18 s. Ako sada umesto 5000
odbiraka generiemo 20000 odbiraka sinusoide, novo vreme izvrenja e biti 2.1 s, dakle ne etiri
nego 11.7 puta due. Razlog za to je dinamiko poveanje duine vektora y, za po jedan u svakom
prolazu kroz petlju.
Postoji jednostavan nain za ubrzanje izvrenja opisanog programa. Ako se pre ulaska u petlju
rezervie prostor u memoriji za ceo vektor (ili matricu), to se najlake izvodi naredbom za
popunjavanje nulama, program se znaajno ubrzava, tako da je vreme izvrenja programa:
y = zeros(1,20000);
for t=1:20000
y(t) = sin(2*pi*t/10);
end
samo 0.16 s, dakle ak krae nego za poetnu verziju programa sa 5000 odbiraka.
Jo bre izvrenje se moe postii potpunim izbegavanjem izraunavanja u petlji:
y = zeros(1,20000);
t = 1:20000;
y = sin(2*pi*t/10);
Ovaj program traje samo 0.04 s.

4. Dodatne funkcije

Osim elementarnih matematikih funkcija, koje su prikazane u dosadanjem izlaganju, u Matlab-u


je implementiran izuzetno veliki broj razliitih funkcija: za analizu i obradu podataka, za rad sa
polinomima, funkcije koje se koriste u obradi signala, numerikoj analizi, linearnoj algebri,
statistici, itd. Jedan broj jednostavnijih funkcija nalazi se u osnovnom Matlab modulu, dok su ostale
grupisane u posebne specijalizovane module (tzv. Toolboxove). Tako postoje Signal Processing
Toolbox (za primenu u digitalnoj obradi signala), Control System Toolbox (za primenu u sistemima
upravljanja), Identification Toolbox (za primenu u identifikaciji sistema), Neural Network Toolbox
(za rad sa neuralnim mreama), Image Processing Toolbox (za primenu u digitalnoj obradi slike),
Optimization Toolbox (za reavanje razliitih linearnih i nelinearnih problema), Statistics Toolbox
(za primenu u statistici), itd. Broj funkcija koje su implementirane u Matlab-u je toliko veliki da ak
i iskusni korisnici ne koriste, niti znaju sve postojee funkcije. Meutim, kada se jednom prihvati
nain rada sa programom i usvoje elementarne operacije, sve sloenije komande i funkcije se
otkrivaju i usvajaju izuzetno brzo i lako (za ta se esto koristi naredba help). Za poetnike u radu
sa Matlabom, u Tabelama 4, 5 i 6 su navedene neke od jednostavnijih funkcija, koje nisu pominjane
u ovom tekstu.
Prilikom ozbiljnijeg rada u Matlab-u preporuuje se korienje funkcija koje su deo programskog
paketa Matlab. Time se postie velika uteda u vremenu potrebnom za izvravanje programa ili
odreenog segmenta programa u odnosu na runo pisan isti takav kod.

51
Signali i sistemi Uputstvo za orienje Matlab-a

Tabela 4: Funkcije za rad sa matricama.

expm,logm i sqrtm stepenovanje, logaritam i koren matrice

det determinanta matrice

norm norma matrice

rank rang matrice

poly,eig karakteristini polinom i sopstvene vrednosti matrice

inv inverzija matrice

orth ortogonalizacija matrice

pinv pseudonverzija matrice

qr ortogonalnotrougaona dekompozicija

rref kanonika forma matrice

svd dekompozicija preko singularnih vrednosti

Tabela 5: Neke od funkcija za analizu podataka.

max maksimalna vrednost

min minimalna vrednost

mean srednja vrednost

std standardna devijacija

sum suma elemenata vektora

diff aproksimacija diferencijala

corrcoef koeficijent korelacije

prod skalarni proizvod

cov kovarijansna matrica

Tabela 6: Neke od funkcija za rad sa polinomima.

roots izraunavanje korena polinoma

poly izraunavanje koeficijenata polinoma iz korenova

polyval izraunavanje vrednosti polinoma

conv mnoenje polinoma

deconv deljenje polinoma

polyfit interpolacija polinomom

52

You might also like