Professional Documents
Culture Documents
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.
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.
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];
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
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);
Asin (acos) inverzni sinus (kosinus) Real (imag) realni (imaginarni) deo
32
Signali i sistemi Uputstvo za orienje Matlab-a
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)];
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.
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
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);
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
Kao to se moe videti, na grafiku je izvren automatski izbor opsega po obe ose.
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
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
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-15 -10 -5 0 5 10 15
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
10
0
1 2 3 4 5 6 7 8
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
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
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)
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]);
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
subplot(121) subplot(122)
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
-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
>> 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
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.
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.
45
Signali i sistemi Uputstvo za orienje Matlab-a
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
20
15
y
10
0
-3 -2 -1 0 1 2 3 4 5
Nezavisno promenljiva x
46
Signali i sistemi Uputstvo za orienje Matlab-a
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
< manje
> vee
== jednako
~= razliito
& logiko i
| logiko ili
~ negacija
48
Signali i sistemi Uputstvo za orienje Matlab-a
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.
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
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
51
Signali i sistemi Uputstvo za orienje Matlab-a
qr ortogonalnotrougaona dekompozicija
52