1. UVOD
Matlab predstavlja moderno, matematiko, fleksibilno, simulaciono okruenje koje povezuje
izraunavanja, grafiki prikaz i programiranje. Poznat po visoko optimizovanim matrinim i
vektorskim izraunavanjima, Matlab nudi jedan intuitivan jezik za izraavanje problema i
njihovih reenja, kako matematiki, tako i vizuelno. Matlab se najee koristi za:
Matlab predstavlja otvoreno okruenje i ima modularnu strukturu koja se sastoji od osnovne
instalacije i mnogo specijalizovanih toolbox-ova koji predstavljaju grupu srodnih funkcija,
odnosno naredbi, kao to su: Control System, Signal Processing, Optimization, Robust Control,
System Identification, Neural Networks, Simulink, itd.
Matlab je tokom godina poboljavan i unapreivan u skladu sa potrebama matematiara,
inenjera i naunika koji su sa razvojem nauke i tehnike nailazili na potrebu da se postojee
naredbe i funkcije Matlaba unaprede, kao i da se naprave dodatni toolbox-ovi koji pruaju nove
mogunosti.
U dananje vreme, u univerzitetskom okruenju Matlab predstavlja standardni alat za
uvodne i napredne kurseve iz matematike, inenjerstva i nauke. U industrijskom okruenju,
Matlab je alat izbora za istraivanje, razvoj i analizu visoke produktivnosti.
2. MATLAB OKRUENJE
Novi Matlab fajl otvara se tako to se ide na File, pa zatim na New i bira se Blank M-file
kao to je prikazano na slici 2.2. Izgled Matlab fajla prikazan je na iduoj slici. Pre nego to se
pokrene m-fajl potrebno ga je prethodno sauvati. M-fajl se uva tako to se ide na File, pa zatim
na Save As i zatim se uva pod eljenim imenom. Na ovaj nain svi m-fajlovi su trajno sauvani
i mogu se pokretati ponovo po potrebi svaki put kada se otvori Matlab. Naravno, m-fajl se moe
i menjati po elji, pa se zatim mogu sauvati izmene.
Nakon to je sauvan m-fajl moemo ga pokrenuti klikom na zelenu strelicu koja se nalazi
odmah ispod opcije Window. Nakon pokretanja m-fajla sve promenljive koje smo kreirali se
uvaju i nalaze se u interaktivnom okruenju u gornjem desnom uglu u delu prozora koji se
naziva Workspace. Na slici 2.1 vidi se sauvana promenljiva "A". Ako bismo eleli da vidimo
ta sadri ova promeljiva potrebno je dva puta kliknuti na "utu kuicu" i sadraj promenljive e
biti prikazan. Takoe, moemo u komandnom prozoru direktno otkucati naziv promenljive i
odmah ispod e nam biti prikazan njen sadraj. Ilustracija ovoga prikazana je na slici 2.4.
Takoe, u interaktivnom okruenju ispod prozora Workspace nalazi se prozor Command
History gde je prikazano po datumima koje linije koda su bile ispisivane u komandnom prozoru.
Size
1x1
Bytes Class
Attributes
8 double
Stringovi su takoe matrice, ali vrste karaktera. Ako definiemo promenljivu y kao string i zatim
ukucamo whos videemo da se klasa razlikuje u odnosu na promenljivu x.
>> y='Ovo je string'
y=
Ovo je string
>> whos
Name
Size
1x13
Bytes Class
26 char array
Ako elimo da pristupamo elementima matrice potrebno je definisati poziciju elementa kome
elimo da pristupimo, odnosno vrstu i kolonu u kojoj se element nalazi. Element koji se nalazi u
drugoj vrsti i prvoj koloni matrice A je 2, a element koji se nalazi u treoj vrsti i treoj koloni
jeste 3. Ovo je ilustrovano na iduem primeru.
>> A(2,1)
ans =
2
>> A(3,3)
ans =
3
Takoe, ako elimo da nam se ispiu samo elementi odreene vrste ili kolone koristimo dve
take (:) i broj vrste, odnosno kolone koje elimo da nam se prikae. Na primer ako bismo eleli
da nam se ispiu elementi prve kolone matrice A zapisali bismo A(:,1). Ako bismo eleli da nam
se ispiu elementi druge vrste napisali bismo A(2,:). Ovo je ilustrovano na iduem primeru.
>> A(:,1)
ans =
1
2
3
>> A(2,:)
ans =
2
>> length(B)
ans =
5
Komentari u Matlabu poinju sa % i sve nakon procentnog znaka se ignorie. Svi komentari
oznaeni su zelenom bojom.
>> %%%%%Ovo je komentar%%%
A=3
A=
3
Vidi se da je Matlab ignorisao komentar i da je izvrio naredbu koja je zadata odmah posle.
Kompleksni brojevi (i matrice) se uvode primenom predefinisanih konstanti i i j za imaginarnu
jedinicu ili kompleksnim rezultatom izraunavanja:
>> i
ans =
0 + 1.0000i
>> sigma=j*3
sigma =
0 + 3.0000i
>> rezultat=sqrt(-16)
rezultat =
0 + 4.0000i
>> whos sigma rezultat
Name
Size
Bytes Class
rezultat
1x1
sigma
1x1
Dvotaka (:) je veoma vana naredba jer pomou nje moemo generisati sekvencijalne podatke:
>> n=1:5
n=
1
Na ovaj nain definisan je niz, odnosno vrsta vektor koji ima 5 elemenata.
Promenljive se mogu izbrisati naredbom clear, na primer naredba clear x y brie promenljive x i
y iz Matlab-ovog komadnog radnog prostora. Ako se ukuca samo clear briu se sve trenutno
definisane promenljive. Ako elimo da obriemo sve to je ispisano u komandnom prozoru
potrebno je ukucati clc.
kompleksnog broja), round (zaokruivanje na najblii ceo broj), fix (zaokruivanje prema nuli),
flour (zaokruivanje prema - ) i ceil (zaokruivanje prema + ).
Matlab ima dve vrste matematikih funkcija i operacija: matrine i tipa element. Sabiranje,
oduzimanje i mnoenje matrica se vri po osnovnim pravilima linearne algebre. Naredba inv(A)
daje inverznu matricu matrice A i vai samo za kvadratne matrice. Naredbe eig, trace, rank i
norm su standardne matrine operacije.
Sabiranje, oduzimanje, mnoenje(.*), deljenje(./) i stepenovanje (.^) se izvode element sa
elementom. Sve operacije tipa element zahtevaju da argumenti imaju iste dimenzije. Kako
Matlab ne bi izvodio operacije kao matrine, odnosno kada elimo da se operacije izvode
element po element potrebno je staviti taku ispred operacije inae e Matlab javiti greku o
neslaganju dimezija. Sve trigonometrijske, hiperboline i transcendentne funkcije se izvode na
bazi element sa elementom. Za uglove Matlab operie u radijan modu.
- Sine.
sind
sinh
- Hyperbolic sine.
asin
- Inverse sine.
asind
asinh
cos
- Cosine.
cosd
cosh
- Hyperbolic cosine.
acos
- Inverse cosine.
acosd
acosh
tan
- Tangent.
tand
tanh
- Hyperbolic tangent.
atan
- Inverse tangent.
atand
atan2
atanh
sec
- Secant.
secd
sech
- Hyperbolic secant.
asec
- Inverse secant.
asecd
asech
csc
- Cosecant.
cscd
csch
- Hyperbolic cosecant.
acsc
- Inverse cosecant.
acscd
acsch
cot
- Cotangent.
cotd
coth
- Hyperbolic cotangent.
acot
- Inverse cotangent.
acotd
acoth
Exponential.
exp
expm1
log
- Exponential.
- Compute exp(x)-1 accurately.
- Natural logarithm.
log1p
log10
log2
pow2
realpow
reallog
- Square root.
nthroot
- Absolute value.
angle
- Phase angle.
complex
conj
- Complex conjugate.
imag
real
unwrap
isreal
floor
ceil
round
mod
rem
sign
- Signum.
Ako bismo eleli da dobijemo objanjenje o jednoj naredbi, na primer kucali bismo help, pa
naziv naredbe:
>> help size
SIZE Size of array.
Matlab ima velike grafike mogunosti koje su pogodne za naunu i inenjersku primenu.
Osnovne naredbe za iscrtavanje signala su plot, loglog, semilogx, semilogy i polar. Sve naredbe
se koriste na isti nain, ali je razmera osa razliita. Naredba plot koristi linearnu podelu osa. Kod
loglog naredbe obe ose su logaritamske. U semilogx (semilogy), x(y) osa je u logaritamskoj
razmeri, a druga osa je linearna. Naredba polar koristi polarne koordinate.
Naredba plot(x,y) prikazuje vektor y u zavisnosti od vektora x. Vektori moraju biti iste duine.
Kako bismo definisali vektor x, odnosno x osu za koju crtamo signal, nain da se automatski
generie vektor sa poetnom vrednou, korakom i zavrnom vrednou je:
vektor=poetna_vrednost:korak:zavrna_vrednost
Korak moe da se izostavi, podrazumevani korak je 1. Za primer definisaemo x osu koja ide od
1 do 10 sa korakom 1:
>> x=1:10
x=
1
10
Na ovaj nain definisali smo vektor vrstu, odnosno niz od 10 elemenata. Matlab e raunati
funkciju y za svaki element niza x. Kada elimo da poveamo broj elemenata potrebno je samo
smanjiti korak ili poveati poetnu i zavrnu vrednost. U principu kada crtamo signale to vie
taaka izaberemo, funkcija e nam preciznije biti nacrtana.
>> x=1:0.1:10
x=
Columns 1 through 11
1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000
Columns 12 through 22
2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3.0000 3.1000
Columns 23 through 33
3.2000 3.3000 3.4000 3.5000 3.6000 3.7000 3.8000 3.9000 4.0000 4.1000 4.2000
Columns 34 through 44
4.3000 4.4000 4.5000 4.6000 4.7000 4.8000 4.9000 5.0000 5.1000 5.2000 5.3000
Columns 45 through 55
5.4000 5.5000 5.6000 5.7000 5.8000 5.9000 6.0000 6.1000 6.2000 6.3000 6.4000
Columns 56 through 66
6.5000 6.6000 6.7000 6.8000 6.9000 7.0000 7.1000 7.2000 7.3000 7.4000 7.5000
Columns 67 through 77
7.6000 7.7000 7.8000 7.9000 8.0000 8.1000 8.2000 8.3000 8.4000 8.5000 8.6000
Columns 78 through 88
8.7000 8.8000 8.9000 9.0000 9.1000 9.2000 9.3000 9.4000 9.5000 9.6000 9.7000
Columns 89 through 91
9.8000 9.9000 10.0000
Na ovaj nain definisali smo niz od 91 element koji ide od 1 do 10 sa korakom 0.1.
Za primer crtanja izabraemo kvadratnu funkciju. Najpre emo definisati x osu.
>> x=-100:100;
Nakon definisanja x ose potrebno je zadati funkciju koju elimo da nacrtamo. Na primer neka to
bude kvadratna funkcija + 4 + 3. Ako je definiemo na sledei nain:
>> y=x^2+4*x+3
??? Error using ==> mpower
Matrix must be square.
dobijamo poruku o greci pri stepenovanju. Kao to je objanjeno u poglavlju 4, ako ne stavimo
taku ispred operacija ^,* i / Matlab e ove operacije tretirati kao matrine i poto ne moemo da
pomnoimo matricu dimenzija 191 sa matricom dimenzija 191 Matlab e prijaviti greku.
Kako bismo izbegli ovu greku potrebno je predstaviti funkciju y kao:
>> y=x.^2+4*x+3;
Nakon to smo definisali x i y moemo upotrebiti naredbu plot:
>> plot(x,y);
Kao rezultat prikazae nam se slika 6.1. Ako bismo eleli da obeleimo x osu i y osu i da damo
naslov ovoj slici napisali bismo sledee naredbe u m-fajlu:
x=-100:100;
y=x.^2+4*x+3;
plot(x,y);
xlabel('x osa');
ylabel('y osa');
title('Prikaz kvadratne funkcije');
Ako bismo eleli da menjamo boju ovoj funkciji, debljinu linije ili da prikaemo liniju pomou
kvadratia ili zvezdica nije potrebno pamtiti sve naredbe, dovoljno je otii u Matlab-ov help,
ukucati plot i videti koje se oznake koriste za specifikaciju linije.
12000
10000
8000
6000
4000
2000
-2000
-100
-80
-60
-40
-20
20
40
60
80
100
Na primer ako bismo eleli da prikaemo ovu funkciju preko crvenih zvezdica u naredbi plot
bismo kucali:
plot(x,y,'pr');
Takoe, ako bismo eleli da na slici imamo prikazanu "mreu" kucali bismo na kraju svih
naredbi grid on. Na kod bi izgledao ovako:
x=-100:100;
y=x.^2+4*x+3;
plot(x,y,'pr');
xlabel('x osa');
ylabel('y osa');
title('Prikaz kvadratne funkcije');
grid on
10000
8000
y osa
6000
4000
2000
-2000
-100
-80
-60
-40
-20
0
x osa
20
40
60
80
100
10000
8000
y osa
6000
4000
2000
-2000
-100
-80
-60
-40
-20
0
x osa
20
40
60
80
100
10000
10000
8000
8000
6000
6000
y osa
12000
y osa
12000
4000
4000
2000
2000
-2000
-100
-50
0
x osa
50
100
-2000
-100
-50
0
x osa
50
100
Standardni relacioni operatori, realizovani u Matlab-u, su: < (manje), <= (manje ili jednako),
> (vee), >= (vee ili jednako), == (jednako), ~= (razliito). U Matlabu, rezultat relacionog
operatora (poreenja) je tipa logical i moe biti: 0 (netano) ili 1 (tano). Dobijene vrednosti 0 i 1
tipa logical se mogu koristiti, bez eksplicitne konverzije u tip double, za izraunavanje sloenijih
numerikih izraza.
Takoe, treba imati u vidu da je matrica osnovna struktura podataka u Matlabu, pa je mogue
i meusobno relaciono poreenje matrica, gde je rezultat - matrica logikog tipa. Standardni
logiki operatori su: & (i), | (ili), ~ (negacija).
3 4
2 1
9
i
=
1 5
3 4 8 .
9 1
5 6 7