Professional Documents
Culture Documents
Uvod u Matlab
Verzija 1.1
Uvod
Matlab je interaktivni sistem namijenjen izvoenju numerikih izrauna.
Omoguava nam jednostavan rad s matricama, crtanje funkcija i podataka, implementaciju
algoritama i povezivanje s programima pisanim u drugim jezicima.
Prvu verziju razvio je 1970. godine Cleve Moler, ef katedre za informatiku na University of
New Mexico.
Danas je Matlab komercijalni proizvod tvrtke Mathworks i ima vie od milion korisnika.
Pokretanje
Na Windows sistemima Matlab pokreemo dvostrukim klikom na Matlab ikonu na desktopu ili
biranjem Matlab-a u Start izborniku.
Daljnje naredbe se ukucavaju u komandnoj liniji oznaenoj sa >>.
Odabirom izbornika File/Preferences moete promijeniti default postavke Matlab-a (font,
boju,...).
Help/Pomo
Ukoliko vam je potrebna pomo tokom rada, pozivom help help dobit ete detaljan opis help
funkcije. Ako vam je potrebna pomo za neko tono odreeno poglavlje, npr.general, unesete u
komandnu liniju help general. S obzirom na veliki obim ispisanih informacija, ukoliko elite da
one budu prikazane jedna po jedna, prvo morate unijeti naredbu more on, pa tek onda help
general. Nakon toga, biranjem bilo koje tipke, na ekranu dobivate idui slijed informacija.
Naredbom helpwin ili helpdesk otvara se interaktivni help prozor. Drugi nain pozivanja help
prozora je biranjem izbornika Help/MATLAB Help.
format short
format short e
format long
format long e
format rational
format bank
1.3333
1.3333e+000
1.33333333333333
1.333333333333333e+000
4/3
1.33
Eksponencijalni zapis (formati koji koriste 'e' u zapisu) je uglavnom koriten za prikaz vrlo
velikih, odnosno vrlo malih brojeva:
-1.34567e+04=-13456.7
-1.34567e-01=-0.134567
Naredba format compact brie prazne linije, dozvoljavajui tako prikaz vie informacija na
ispisu. Ukoliko prazne linije elimo vratiti nazad, to radimo naredbom format loose.
Aritmetike operacije
Pogledajmo kako Matlab koristimo kao kalkulator.
Aritmetika operacija
Zbrajanje
oduzimanje
mnoenje
dijeljenje
potenciranje
Simbol
+
*
/ ili \
^
MATLAB ima dvije operacije dijeljenja / - desno dijeljenje i \ - lijevo dijeljenje. One ne daju isti
rezultat:
>>47/3
ans =
15.6667
>>47\3
ans =
0.0638
Primjetite da je rezultat od 47\3 jednak onom od 3/47.
Matlab vodi rauna o prioritetima raunskih operacija. Prema tome, prvo izraunava vrijednosti
u zagradama, zatim potenciranje, nakon toga operacije * i / (poevi s lijeva na desno) i na kraju
operacije + i (s lijeva na desno). Npr:
>>1+5/4*3
>>ans =
4.7500
Matlab je prvo izraunao vrijednost izraza 5/4, to pomnoio s 3 i na kraju tu vrijednost dodao
1+ 5
jedinici. Meutim ako je ono to ste htjeli izraunati vrijednost izraza
onda morate
4*3
koristiti zagrade:
>>(1+5)/(4*3)
>>ans =
0.5000
Da bi uvidjeli vanost pravilne uporabe zagrada, pogledajte idui primjer:
Matematiki izraz
8
+2
2
4+8
+2
2
4+8
2+2
8
4+
2+2
4+
Matlabov zapis
Vrijednost
4 + 8/ 2 + 2
10
(4 + 8) / 2 + 2
(4 + 8) /(2 + 2)
3
6
4 + 8 / (2 + 2)
Simbol
==
~=
<,<=
>, >=
&
|
~
Primjer upotrebe:
>> 5<13
ans =
1
>> 5>13
ans =
0
Unoenje izraza 5<13 Matlab tretira kao logiki upit, odnosno tvrdnju 5 je manje od 13?. I
odgovara ans=1, to oznaava logiku istinu. U drugom sluaju Matlab odgovara sa 0, to
oznaava negativan odgovor, odnosno logiku neistinu.
Izraze moemo i kombinirati:
>> x=7;
>> x > 3 | x == -3
ans =
1
Varijable
>> 3-2^4
ans =
-13
>> ans*5
ans =
-65
Rezultat prve kalkulacije Matlab oznaava kao ans i koristi ga u drugoj kalkulaciji gdje je
njegova vrijednost promijenjena i sad iznosi -65.
Prema tome, ans je redefinirana varijabla u koju Matlab smjeta trenutnu vrijednost izrauna
ukoliko korisnik ne specificira drukije.
Za pohranjivanje vrijednosti preporuljivo je definirati vlastite varijable.
4
Ime varijable moe se sastojati od bilo koje kombinacije slova i znamenaka poevi sa slovom.
Znakovi nisu dozvoljeni, dok koritenje specijalnih/rezerviranih imena kao to su eps, pi, Inf
nije preporuljivo.
>> x = 3-2^4
x=
-13
>> y = x*5
y=
-65
Sada x ima vrijednost -13 , a y -65 i oni mogu biti koriteni u narednim raunima.
Ukratko, da bi varijablu mogli koristiti na desnoj strani nekog izraza, prethodno joj moramo
pridodati neku vrijednost.
Ukoliko ne elimo na zaslonu vidjeti rezultate meuoperacija, izraz zavrimo s ; (toka-zarez):
>> x=-13;
>>y = 5*x
y=
-65
Pored toga ; slui za razdvajanje vie naredbi u jednom redu. Ukoliko nam je naredba
predugaka za jedan red dodavanjem na kraju tog reda ... ista se nastavlja u sljedeem redu.
Naredba who (whos) daje listu svih koritenih varijabli.
Naredba clear <ime_varijable> brie navedenu varijablu iz tekueg radnog prostora, a clear all
brie vrijednost svih varijabli.
clc brie/isti komandni prozor i postavlja kursor na vrh prozora
Naredba % je koritena za komentare i Matlab ignorira cijelu liniju to slijedi nakon tog znaka.
Ukoliko elite prekinuti Matlab u izvrenju neke naredbe (naprimjer zbog beskonane petlje u
pogreno napisanom m-file-u) to radite istovremenim pritiskom na ctrl+c. Ovaj nain nije
preporuljiv, ali je u nekim situacijama neophodan.
Matlab nam omoguava jednostavno (ponovno) pozivanje jednom uneenih naredbi.
Opetovanim koritenjem tipki (odnosno ) prikazivat e nam se prethodno unoene naredbe i
ukoliko neku od njih elimo ponovo izvriti (po potrebi je moemo i izmijeniti) samo pritisnemo
tipku enter. Unoenjem npr. naredbe p , ponovo e biti pozvana naredba koja poinje slovom p
a posljednja je izvrena.
>> v4 = 3*v
v4 =
3.0000 9.0000 6.7082
>> v5 = 2*v -3*v3
v5 =
-7.0000 -6.0000 -10.5279
>> v + v2
??? Error using ==> +
Matrix dimensions must agree.
Ova poruka upozorava nas da matrice nisu jednakih dimenzija.
Vektor stupac konstruiramo na slian nain. Elemente razdvajamo znakom ; ili prelaskom u novi
red.
>> c = [ 1; 3; sqrt(5)]
c=
1.0000
3.0000
2.2361
Postoji brzi nain za generiranje nekih retanih vektora:
>> 1:4
ans =
1234
>> 3:7
ans =
34567
Openita sintaks je a : b : c i time je generiran vektor iji prvi element ima vrijednost a, a ostali
elementi se dobiju uveavanjem a za vrijednost b sve dok je ta suma manja od c.
>> 0.32:0.1:0.6
ans =
0.3200 0.4200 0.5200
>> H=10:2:3
H=
Empty matrix: 1-by-0
Prethodna naredba kao rezultat daje praznu matricu jer je poetni element vei od zavrnog, a
korak uveavanja pozitivan.
Argumenti
m, n su prirodni brojevi
n je prirodni broj
X je jednoredna
ili jednostupana matrica
A je proizvoljna matrica
A je proizvoljna matrica
A je proizvoljna matrica
A je proizvoljna matrica
A je proizvoljna matrica
prod(A)
A je proizvoljna matrica
det(A)
inv(A)
A je kvadratna matrica
A je kvadratna matrica
to radi
Generira nul-matricu od m redaka i n stupaca.
Generira jedininu matricu reda n.
Generira dijagonalnu matricu iji su elementi redom
elementi od X.
Rauna rang matrice A.
Ispisuje broj redaka i stupaca matrice A.
Ispisuje broj redaka matrice A.
Ispisuje broj stupaca matrice A.
Ako je A jednoredna ili jednostupana, zbraja sve elemente
od A, a ako nije, zbraja ih po stupcima.
Ako je A jednoredna ili jednostupana, mnoi sve elemente
od A, a ako nije, mnoi ih po stupcima.
Rauna determinantu matrice A.
Rauna inverznu matricu matrice A.
Znak
+
*
*
/
\
^
.*
./
.\
.^
Napomena
Matrice moraju biti istih dimenzija.
Matrice moraju biti istih dimenzija.
Matrice moraju biti ulanene.
Matricu ne moemo dijeliti matricom!
Matrica mora biti kvadratna.
Matrice moraju biti istih dimenzija.
S lijeve ili desne strane znaka moe
biti i broj.
Matrice moraju biti istih dimenzija.
S lijeve ili desne strane znaka moe
biti i broj.
Matrice moraju biti istih dimenzija.
S lijeve ili desne strane znaka moe
biti i broj.
Matrice moraju biti istih dimenzija.
S lijeve ili desne strane znaka moe
biti i broj.
Posebno obratite panju na operacije koje poinju tokom. Zovemo ih operacije po pozicijama.
One uglavnom nemaju matematiki ekvivalent osim u nekim posebnim sluajevima.
Pojasnit emo poblie neke od navedenih operacija, odnosno ukoliko je mogue, nai emo
njihove matematike ekvivalente:
10
uv = u i vi
i =1
4
Neka je u=[1 2 3] a v= 5 . Pogledajmo emu je jednako uv:
6
uv = 1 4 + 2 5 + 3 6 = 4 + 10 + 18 = 32
U Matlabu to moemo izraunati ovako:
>> x=[1 2 3]; y=[4; 5; 6];
>> x*y
ans =
32
Gore definirane vektore mogli bismo pomnoiti i ovako:
u v = u1v1 u 2 v 2 u 3 v3
u n vn
u. / v = u1 / v1 u 2 / v 2
u n / vn
11
Odnosno za vektore x i y:
>> x./y'
ans =
0.2500 0.4000 0.5000
Ukoliko elimo kvadrirati elemente vektora u, to moemo napraviti na dva naina, ili kao u.*u ili
jednostavnije u.^2
>> x.*x
ans =
1 4
>> x.^2
ans =
1 4
>> C=B';
>> size(A)
ans =
2 3
>> size(C)
ans =
2 3
Vidimo da su matrice A i C istog tipa, stoga:
>> A.*C
ans =
1 6 15
8 20 36
Pogledajmo naredni primjer:
>>a=rand(3)
>>a =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
Naredbom rand(3) generirana je matrica tipa 3 3 sastavljena od sluajnih brojeva.
>> m=max(a)
m=
0.9501 0.8913 0.8214
Naredbom max dobili smo vektor koji sadri maksimalne vrijednosti stupaca matrice a. Ukoliko
na vektor m primijenimo narebu max, dobit emo maksimalni element vektora.
>>max(m)
ans =
0.9501
Ukoliko nas interesira pozicija maksimalnog elementa, to dobivamo sa:
>> [v,ind]=max(m)
v=
0.9501
ind =
1
13
Ponekad je praktino veliku matricu generirati uz pomo prethodno definiranih manjih matrica:
>> D=[1 2; 3 4; 5 6]; X=[7; 8; 9];
>> E=[D X]
E=
1 2 7
3 4 8
5 6 9
Na ovaj nain matrica X dodana je pored matrice D, a u iduem primjeru matrice su
postavljene jedna iznad druge:
>> Y=[10 11];
>> F=[D; Y]
F=
1 2
3 4
5 6
10 11
Sada emo pokazati kako generirati tablicu koja e nam sluiti za usporedbu vrijednosti dviju
funkcija za odreeni raspon vrijednosti argumenta:
>>x = (0:0.1:0.5)';
[x 4*sin(3*x) 3*sin(4*x)]
ans =
0
0.1000
0.2000
0.3000
0.4000
0.5000
0
0
1.1821 1.1683
2.2586 2.1521
3.1333 2.7961
3.7282 2.9987
3.9900 2.7279
Znaenje
Sinus
Poziv
sin(3*pi)
Cos
Kosinus
cos(2*pi/3)
14
Rezultat
ans =
3.6738e-016
ans =
-0.5000
Tan
Tangens
tan(pi/4)
Asin
arkus sinus
asin(1)
Acos
arkus kosinus
acos(1)
Atan
arkus tangens
atan(1)
Sinh
hiperbolni sinus
sinh(0)
Cosh
hiperbolni kosinus
cosh(0)
Tanh
hiperbolni tangens
tanh(-3)
asinh
asinh(1)
acosh
acosh(1)
atanh
atanh(-0.9951)
Sqrt
sqrt(2)
Exp
exp(1)
log10
log10(0)
Abs
abs(3-4*i)
Real
real(-3+2*i)
Imag
imag(-3+2*i)
zaokruivanje broja
na najblii cijeli broj
round(2.3)
Log
Conj
Round
log(1)
conj(-3+2*i)
round(3.5)
15
ans =
1.0000
ans =
1.5708
ans =
0
ans =
0.7854
ans =
0
ans =
1
ans =
-0.9951
ans =
0.8814
ans =
0
ans =
-3.0046
ans =
1.4142
ans =
2.7183
ans =
0
Warning: Log of zero
ans =
-Inf
ans =
5
ans =
-3
ans =
2
ans =
-3.0000 - 2.0000i
ans =
2
ans =
4
Trigonometrijske funkcije
One poznate Matlab-u su sin,cos, tan i njihov argument mora biti u radijanima.
>> x = 5*cos(pi/6), y = 5*sin(pi/6)
x=
4.3301
y=
2.5000
U iduem primjeru pogledajte pogrenu a zatim i ispravnu upotrebu funkcije sinus:
>> sin 1
ans =
-0.9538
>> sin(1)
ans =
0.8415
Matlab nam na upit sin 1 vraa odgovor -0.9538 i ne upozorava nas na pogrean unos.
Funkcije inverzne trigonometrijskim funkcijama su asin, acos, atan i njihov rezultat je izraen u
radijanima.
>> acos(x/5), asin(y/5)
ans =
0.5236
ans =
0.5236
>> pi/6
ans =
0.5236
Ostale elementarne funkcije ( sqrt, exp, log, log10)
>> x = 9;
>> sqrt(x),exp(x),log(sqrt(x)),log10(x^2+6)
ans =
3
ans =
8.1031e+03
ans =
1.0986
ans =
1.9395
16
exp(x) oznaava eksponencijalnu funkciju exp(x) = ex i njen inverz je logaritamska funkcija log.
17
>>q=[2 -3];
>>p+q
??? Error using ==> +
Matrix dimensions must agree.
Meutim, ako polinom q lano prikaemo polinomom etvrtog stupnja, rijeit emo problem:
>>q1=[0 0 0 2 -3]
>>p+q1
ans =
5 -1
3 14 -11 -15
Ponekad elimo neku naredbu ili niz naredbi ponoviti odreeni broj puta. Ovisno o tome da li
unaprijed znamo koliko emo puta ponoviti naredbu ili se ponavljanje nastavlja dok god je
ispunjen odreeni uvjet, koristimo neku od dolje navedenih naredbi:
Naredba for
Naredba for slui za ponavljanje odreene naredbe ili niza naredbi unaprijed zadani broj puta.
Sintaksa for petlje:
for varijabla=izraz1:izraz2:izraz3
naredbe
end
18
n
za n=1,2,3,4,5,6 :
6
while izraz
naredbe
end
Primjer: koja je najvea vrijednost n-a za koju je suma 1+2+3+...+n < 100?
>> S = 1; n = 1;
>> while S+(n+1)<100
n=n+1;
S=S+n;
end
>> [S, n]
ans =
91 13
Naredba if...then...else...end
Omoguava nam izvravanje razliitih komandi ovisno o istinitosti logikog testa.
if izraz
naredbe
end
if izraz
naredbe
else
naredbe
end
Funkcijski m-file
Da bismo pojednostavnili pisanje nizova naredbi koji se ponavljaju i kreirali nove funkcije,
koristimo m fileove.
Kreiranje m-file-a:
U Matlabovom glavnom izborniku biramo FileNewM-file ili kliknemo na ikonu New MFile na alatnoj traci. Otvorit e se editor u kojem unosimo naredbe naeg file-a. Kada smo
gotovi, file treba spremiti. U editoru kliknemo na ikonicu Save, ili u izborniku File biramo opciju
Save/Save As.
1. Promijenimo direktorij u C:\WORK (provjeriti u dokumentaciji koji direktorij Matlab
automatski pronalazi).
2. Dodijelimo ime pod kojim e se file (datoteka) pohraniti u memoriju. Novije verzije Matlaba
automatski dodaju ekstenziju .m, dok je u starijim verzijama potrebno eksplicitno navesti
ekstenziju kada datoteci dodjeljujemo ime.
3. Kliknemo na Save.
File pokreemo/izvravamo tako da u komandnoj liniji napiemo njegovo ime i znak Enter.
Funkcijskim mfileom kreiramo novu funkciju. Ovako kreirana funkcija ravnopravna je
funkcijama ugraenim u MATLAB-u (kao to su npr. sin, log, det, itd.) Na taj nain moemo
prema naoj volji i potrebama proiriti biblioteku postojeih funkcija.
Sintaksa je:
20
Ime funkcijskog m-filea mora biti isto kao i ime funkcije koja se njima definira. Samu funkciju
pozivamo kao i svaku drugu funkciju, koristei njeno ime, zagrade, ulazne i izlazne varijable.
Varijable mogu biti i brojevi i matrice. Jasno je da broj i tip varijabli u definiciji i pozivu
funkcije moraju biti isti.
function [izlazne varijable]=ime funkcije(ulazne varijable)
naredbe
Budite sigurni da ime funkcije nije u sukobu s nekom funkcijom koja ve postoji u Matlabu.
Primjer: funkcija koja rauna povrinu trokuta kojem znamo duljine stranica.
function [P] = povrsina(a,b,c)
% Rauna povrinu trokuta kom znamo duljine stranica
% Ulazni podaci:
% a,b,c: Duljine stranica
% Rezultat:
% P: povrina trokuta
% Upotreba:
% Povrsina = povrsina(2,3,4);
% Written by dfg, Oct 14, 1996.
s = (a+b+c)/2;
P = sqrt(s*(s-a)*(s-b)*(s-c));
%%%%%%%%% end %%%%%%%%%%%
Ukoliko u Matlabovom prozoru napiemo
>> help povrsina
Bit e prikazani komentari iz m-file-a:
Rauna povrinu trokuta kom znamo duljine stranica
Ulazni podaci:
a,b,c: Duljine stranica
Rezultat:
P: povrina trokuta
Upotreba:
Povrsina = povrsina(2,3,4);
Written by dfg, Oct 14, 1996.
Da bi izraunali povrinu trokuta kom su duljine stranica 10, 15, 20:
>> Povrsina = povrsina(10,15,20)
Povrsina =
72.6184
Vidimo da je rezultat izrauna pridruen varijabli Povrsina.
21
4. Graf funkcije
Graf elementarnih funkcija
Osnovni alat koriten za crtanje u Matlabu je funkcija plot(). Da bi shvatili kako ta funkcija radi,
zamislimo da elimo nacrtati liniju koja prolazi kroz toke (1, 4) i (3, 6). Prvo definiramo x
vrijednosti kao vektor x=(1,3) (vektor apscisa) i y vrijednosti kao vektor y=(4,6) (vektor
ordinata). Zatim nacrtamo toke definirane tim vektorima (to su (1,4) i (3,6) ) i poveemo ih
linijom. Odgovarajue naredbe u Matlabu bile bi:
>>x=[1 3]
x=
13
>>y=[4 6]
y=
46
>>plot(x,y)
22
23
Oznaka toaka
. point
o circle
x x-mark
+ plus
* star
s square
d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
Oznaka linije
: dotted
-. dashdot
-- dashed
- solid
Ukoliko elimo uveati neki dio grafa, u izborniku grafikog prozora biramo Tools/Zoom In.
Koristei mia oznaimo dio krivulje ili samo kliknemo na dio koji elimo poveati i Matlab e
automatski regenerirati crte poveavajui prethodno mjerilo (raspon vrijednosti na
koordinatnim osima e biti promijenjen koristei faktor 2). Postupak moemo ponoviti eljeni
broj puta.
Isto moemo postii biranjem ikone Zoom In na alatnoj traci grafikog prozora. Naredba/ikona
Zoom Out vraa poveani dio na prethodnu dimenziju.
Trei nain za uveavanje prikaza bio bi unoenjem naredbe zoom odnosno zoom off u
komandnom prozoru.
Ako elimo da graf bude nacrtan u novom prozoru, prije pozivanja plot naredbe, unesemo
naredbu figure. Pozivanje naredbe npr. figure (2) otvorit e prozor s oznakom 'Figure 2'.
Ukoliko je prozor s tom oznakom ve postojao u pozadini, postat e aktivan i u njemu e biti
prikazan rezultat idue plot naredbe.
Naredba clf brie sadraj grafikog prozora.
24
25
5. Dodatak
uvanje zapisa
26
Literatura:
27