Post on 29-Nov-2019
UvodMatrice
Skripte i funkcijeGrafika
MATLAB
10. travnja 2012.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Table of contents
1 Uvod
2 MatriceVarijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
3 Skripte i funkcijeSkripteNaredbe grananjaFunkcije
4 GrafikaFunkcija PlotMijenjanje elemenata grafaRad sa grafikom
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
MATLAB
Matlab (MATrix LABoratory) je programsko okruzenje za tehnickoi znanstveno racunanje.Omogucava:
izvodenje kompleksnih proracuna
vizualizaciju rezultata
izvodenje simulacija
programiranje
MATLAB ima vlastiti (interpretirani) programski jezik visokognivoa koji je jednostavan za koristenje i upotrebljavastandardiziranu matematicku sintaksu. Podrzava iobjektno-orijentirani pristup.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Korisnicko sucenje
Dijelovi korisnickog sucelja:
Command Window (interaktivna konzola) - interaktivnakonzola u koju utipkavamo naredbe i vidimo njihov rezultat
Workspace (radni prostor) - popis svih varijabli i njihovaosnovna svojstva
Command History - popis ranije izvrsenih naredbi
Current Folder (trenutni direktorij) - direktorij u kojem senalaze programi dostupni za izvrsavanje
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Help
MATLAB dolazi sa vrlo iscrpnim sustavom pomoci, pod menijem
Help -> Product Help
Osim toga, pomoc je dostupna u interaktivnoj konzoli:
help eig
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Znacenje
U MATLAB okruzenju, matrica je pravokutno polje brojeva.1× 1 matrice zovemo skalarima.Matrice sa jednim stupcem ili retkom zovemo vektori.Unosimo ih na vise razlicitih nacina:
eksplicitan unos niza elemenata
punjenje matrice koristeci vanjsku podatkovnu datoteku (eng.external data files)
generiranje matrice koristenjem ugradenih funkcija (eng.built-in functions)
kreiranje matrica koristenjem datoteka sa vlastitim funkcijama
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Operacije sa matricama
Upisemo u command window
A = [ 16 2 5 7; 5 11 3 23; 1 2 1 5; 7 1 15 17 ]
i stisnemo Enter. S time smo kreirali matricu A reda 4× 4. Akozelimo provjeriti sto nam predstavlja A, samo upisemo A i stisnemoEnter.Pogledajmo koje funkcije su nam dane za rad sa matricama(build-in functions).sum(A), A’, A.’, diag(A), size(A), length(A),
min(A), max(A)
nam redom daju: retcani vektor koji je suma pojedinih stupacamatrice A, matricu koja je adjungirana matrica matrice A,
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Operacije sa matricama - nastavak
matricu koja je transponirana matrica matrice A, stupcani vektorkoju cine elementi na glavnoj dijagonali matrice A, . . .Ako zelimo dohvatiti elemente matrice u i-tom retku i j-tomstupcu, izraz je A(i, j).Ako zelimo dohvatiti cijeli k-ti stupac, izraz je A(1:4;k).Ako zelimo dohvatiti cijeli k-ti redak, izraz je A(k, 1:4)Pokusajmo unijeti izraz A(4, 6). Normalno, javlja nam se graska,jer matrica nema toliko stupaca (sto i pise u objasnjenju greske).Ako zelimo promijeniti vrijednost pojedinog elementa matrice (navrijednost k), koristimo izraz A(i, j) = k.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Generiranje matrica
zeros(i, j) nam daje matricu i × j sa svim elementima 0.ones(i, j) nam daje matricu i × j sa svim elementima 1.Konkatenacija je spajanje vise manjih matrica u jednu veliku.Npr. A=[1 2; 3 4];
B=[5 6; 7 8];
qverb—C=[A ; B]—Cijeli k-ti redak matrice brisemo sa A(k, :) = [].Determinantu matrice A dobijamo sa det(A).Pogledajmo gresku koju nam MATLAB javlja u slucaju:A = [2 4; 8 1]; inv(A).poly(A) daje koeficijente karakteristicnog polinoma matrice A.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Napomena - polinomi
Polinomi se u MATLABU predstavljaju sa retcanim vektorima kojisadrzavaju koeficijente uz pojedine potencije varijable x. Npr. akobi zeljeli raditi sa polinomom P(x) = 7x3 + 4x2 + 3, u MATLABUbi unijeli P =[7 4 0 3]Neke funkcije za rad sa polinomima su:roots(P), conv(P, Q), [R S] = deconv(P, Q), polyder(P)koji redom daju:korijene polinoma P, umnozak polinoma P i Q, dijeljenje polinomaP i Q (R je rezultat dijeljenja, S je ostatak), derivacija polinomaP.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Operatori
Bez matematickog znanja o matricama, one nam predstavljajudvo-dimenzionalna numericka polja. Lista operatora za rad sanjima je:
+ zbrajanje− oduzimanje.∗ mnozenje pripadnih elemenata./ dijeljenje pripadnih elemenata.\ dijeljenje slijeva pripadnih elemenata.^ potenciranje pripadnih elemenata.’ transponiranje
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - matrice
Primjer
A =[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
B=[1 1 1 1; 2 2 2 2; 3 3 3 3; 4 4 4 4];
A + B
A - B
A.*B
A./B
A.\B
A.^B
A.’
A(~isprime(A))=0
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Slaba tipiziranost
MATLAB je slabo tipiziran jezik. Nije potrebno deklarirativarijable, pojedine varijable mogu mijenjati svoj tip ”u let”:
a = [1 2 3; 4 5 6; 7 8 9]
a = ’neboder’
a.element = 123
Kada MATLAB naide na novu varijablu, automatski se kreira tavarijabla i alocira se spremnik prikladne velicine. Ako varijabla vecpostoji, MATLAB joj promijeni sadrzaj i, ukoliko je potrebno,alocira novi spremnik.Ime varijable mora poceti sa slovom. Ime varijable moze bitiproizvoljne duljine, ali MATLAB za raspoznavanje koristi prvihnamelength znakova.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Interne varijable
eps=2.2204e-16 tocnost realnih brojeva(razlika izmedu 1.0 i prvogveceg)
realmin=2.2250733858507202e-308 vrijednost najmanjeg realnogbroja
realmax=1.797697134862316e+308 vrijednost najveceg realnogbroja
pi=3.14154265358979 vrijednost broja
Inf dobija se dijeljenjem sa 0 ili ako dode do overflowa
Nan (not a number) se dobiva evaluacijom izraza tipa 00 ili
∞∞
i,j imaginarna jedinica kompleksnih brojeva
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Eksterne varijable
Ime varijable:
potrebno je razlikovati uporabu velikih/malih slova
maksimalni broj znakova je 31
prvi znak mora biti slovo
specijalne varijable ciji su nazivi rezervirani: ans, pi, eps, flops,inf, nan, i, j, nargin, nargout, realmin, realmax
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Napomena - save, load
Deklarirane varijable mozemo spremiti u binarnu mat datoteku ikasnije ih ponovno ucitati. Varijable x, yy, ZZZ spremamo udatoteku var.mat pomocusave(’var.mat’, ’x’, ’yy’, ’ZZZ )Sve deklarirane varijable spremamo u datoteku var.mat pomocusave( ’var.mat’)Varijable x, yy, ZZZ ucitavamo iz datoteke var.mat pomocuload( ’var.mat’, ’x’, ’yy’, ’ZZZ’ )Sve varijable koje postoje u datoteci var.mat ucitavamo saload( ’var.mat’ )
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Brojevi
Neki zapisi brojeva su:
4, 57, 0.03004, 1.34e23, 2i, 5e2j
MATLAB interno sprema brojeve u long formatu koristeci IEEEstandard sa pomicnom tockom. Ti brojevi imaju preciznost odotprilike 16 znacajnih decimalnih brojeva.( od 10−308 do 10308).
Primjer
x=3333333333333333333333333333333333333331;
y=3333333333333333333333333333333333333332;
x==y
Zasto MATLAB javlja da su x i y jednaki?
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer (kompleksni brojevi)
Primjer
Koristimo funkciju sort na dva kompleksna broja:
a = 2 + 5i;
b= 1 + 7i;
sort([a, b])
Zasto? Jer se sortira po fazama.
angle(a)
angle(b)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Operatori
+ zbrajanje- oduzimanje* mnozenje/ dijeljenje\ dijeljenje slijeva^ potencija’ adjungiranje
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Logicki i relacijski operatori, funkcije
Svi logicki i relacijski operatori i navedene funkcije se izvrednjavajupo elementima.
~A (logicko NE), A&B (logicki I), AIB (logicki ILI)
A<B, A<=B, A>B, A>=B, A==B, A~=B
sin, cos, asin, acos, sinh, cosh, asinh, acosh, exp,
log, log10, sqrt, abs, round
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Ugradene funkcije
MATLAB nam pruza veliki broj standardnih matematickih funkcija(npr. abs, sqrt, exp, sin). Listu mozemo dobiti naredbomhelp elfunSiru listu mozemo dobiti naredbamahelp specfun ili help matInf se dobija dijeljenjem sa 0 ili ako dode do overflowa. NaN (not anumber) se dobiva evaluacijom izraza tipa 0
0 ili ∞∞
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Funkcija format
MATLAB moze ispisivati realne brojeve u 4 osnovna formata. Npr.kako se a = 31.4 ispisuje u razlicitim formatima?
a = 3.14
format short
a
format long
a
format short e
a
format long e
a
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Visedimenzionalna polja
Visedimenzionalna polja u MATLAB okruzenju su polja sa 3 ili viseindeksa.
Primjer
A = ones(2, 3, 4);Asum(A, 1)sum(A, 2)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Cell-arrays
Cell-arrays u MATLABU su visedimenzionalna polja ciji elementi sukopije drugih polja. Najcesce ih kreiramo stavljanjem objekata uviticaste zagrade.
Primjer
A=[1 2 3; 4 5 6; 7 8 9];B={ A sum(A) prod(prod(A)) }B{1}B{2}B{3}A(1, 1)=10B{1}
Primijetimo, promijenili smo A, ali se sa B nije nista dogodilo.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer
Primjer
A = cell(5, 1);for n = 1:5A{n} = ones(n);endAA{1}A{2}
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Znakovi i tekst
Tekst se unosi u MATLAB koristeci navodnike.z = ’Rezultat’Dobili smo polje od osam znakova. Interno se ti znakovi spremajukao brojevi.a= double(z)b = char(a)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - znakovi
Primjer
a = [z, ’ u redu’]
b = [z; ’ u redu’]
c = [z; ’normalan’]
d = char(z, ’u redu’, ’jer char sam uredi’,
’(doda svakom redu tako da su redovi iste duljine)’)
e = { z; ’sa cell-array-ima nema problema’;
’Kako to?’ }
length(c)
size(d)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Strukture
Strukture su visedimenzionalna polja u MATLABU, do cijihelemenata se dolazi preko njihovih imena (eng. field designators).Strukture mogu sadrzavati elemente raznih tipova:
Primjer
Kreirajmo strukturu s koja se sastoji od tri polja:
s.ime = Mirko;
s.ocjena = 5;
s.matrica = [1 2 3; 4 5 6];
s
k-ti element strukture dohvacamo preko s(k), a pojedino poljek-tog elementa sa s(k).imepolja
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - nastavak
Primjer
Moguce je doznati da je li nesto element strukture:
isfield( s, ’ime’)
isfield( s, ’prezime’)
Takoder, mozemo dodavati element po element:
s(2).ime = ’Petra’;
s(2).ocjena = 4;
s(2).matrica = [ 7 8 9; 10 11 12 ]
Pregled svih ocjena mozemo dobiti sa [s.ocjena], a varijable saimenima mozemo kreirati sa [A B] = s.imena
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Simbolicke varijable
Varijable koje koristimo kod simbolickog izracuna je potrebnokreirati kao x=sym(’x’) ili syms x y .Ukoliko je potrebno kreirati kompleksnu simbolicku varijablukoristimo syms x y real; z = x + y*i.Simbolicku varijablu mozemo zamijeniti sa nekom vrijednostikoristeci subs(f,x,xvrijednost)
Primjer
S=sym(’sin(x)^2+cos(x)^2’);
S
simplify(S)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Kreiranje simbolickih izraza
Simbolicke izraze i varijable kreiramo na dva nacina: definiramosimbolicki izraz odjednom pomocu naredbe sym (kako smo vecpokazali) ili naredbom syms navedemo sve simbolicke varijable, azatim definiramo simbolicki izraz S (bez koristenja sym). U prvomslucaju u radnom prostoru bit ce samo S, dok ce u drugom slucajubiti S, a, x i y.
Primjer
syms a b c ;
A=[a b c;a b c;a b c];
A
sum(A(1,:))
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - deriviranje
Primjersyms x;
f = x^2*sin(x);
diff(f,2)
syms y z;
g = y^2*z+2*z^2*y;
diff(diff(g,y),z)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - integriranje
Primjersyms x;
f = x*exp(-x);
F = int(f)
syms y a b;
g = y*exp(-y);
G = int(g, y, a, b)
subs(G, {a,b}, [0,10])
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - limes
Primjer
syms x a b;
f = x*(1+a/x)^x*sin(b/x);
limit(f,x,inf)
syms y;
limit(1/y, y, 0)
limit(1/y, y, 0, ’left’)
limit(1/y, y, 0, ’right’)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - pojednostavljenje izraza
Primjersyms x y;
expand(cos(x + y))
factor(x^3 - y^3)
syms z;
f = (z^2 + 5*z + 6)/(z + 2);
simplify(f)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Primjer - jednadzbe
Primjer
S=solve(’x^2+y^2-1=0’,’y=4*sqrt(3)*x^3’)
S.x
S.y
dsolve(’Dy = y + sin(t)’)
dsolve(’Dy = y + sin(t)’,’y(0)=1’)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Skripte i funkcije
Naredbe se mogu unositi jedna po jedna u command windowu ilimozemo napisati niz naredbi u neku datoteku koje onda izvrsimokao i svaku drugu MATLAB funkciju. Za unos niza naredbikoristimo bilo koji editor (najbolje koristiti MATLAB Editor).Postoje dvije vrste programskih datoteka:
Skripte . . . ne primaju input argumente, ne vracaju outputargumente. Koriste se podacima iz radnog prostora
Funkcije . . . primaju input argumente, vracaju outputargumente. Interne varijable su lokalne samo za tu funkciju.
Sadrzaj neke programske datoteke imena nekoime mozemo vidjetinaredbomtype nekoime
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Nacin rada
Niz naredbi kojeg zelimo kasnije ponovno pozvati mozemo napisatiu bilo kojem editoru teksta i spremiti u m-datoteku.MATLAB takodder ima svoj editor:Window->Editor
Ako niz naredbi spremimo u datoteku skripta.m, onda ih mozemoredom sve izvrsiti tako da u interaktivnoj konzoli napisemo naredbuskripta. Vazno je da datoteka skripta.m bude ili u trenutnomdirektoriju (Current Folder) ili u putanji (path). Bilo koji direktoriju putanju mozemo dodati preko File->Set Path ...
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Primjer
U nekom tekst-editoru unesemoclear; A=fix(rand(3)*10);
B=fix(rand(3)*10);
whos
te spremimo pod imenom primjer.m.Ako sada u konzoli upisemo primjer, Matlab ce potraziti m-file sanavedenim imenom i izvrsiti naredbe zapisane u njemu, sto cerezultirati brisanjem svih postojecih varijabli (clear), stvaranjemdviju slucajnih matrica A i B, te ispisivanjem trenutnih varijabli saprikazom potrosnje memorije svake varijable (whos). Imenam-datoteka ne smiju biti ista kao i imena standardnih naredbi ilifunkcija, te se iste moraju snimiti u neki od foldera koji Matlabpregledava prilikom izvodenja (path).
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Petlje1
Unutar skripti dostupne su nam standardne naredbe za grananje, tepetlje:
if uvjet_1
naredba_1;
naredba_2;
elseif uvjet_2
naredba_3;
else
naredba_4;
end
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Petlje2
for brojac = vektor-redak
naredba_1;
naredba_2;
end
while uvjet
naredba_1;
naredba_2;
end
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
If - then
Ako brojevi x i y nisu preblizu, napravite 1x−y .
Primjer
x = input(’Unesite prvi broj:’);
y = input(’Unesite drugi broj:’);
if abs( x - y ) < 1e-8
’Brojevi x i y su preblizu’
else
z = 1 / ( x - y );
end
z
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
If - else if - else
Ispisite da li je unijeti broj pozitivan, negativan ili jednak nuli.
Primjer
broj = input(’Unesite broj: ’);
if broj < 0
disp(’Broj je negativan’)
elseif broj > 0
disp(’Broj je pozitivan’)
else
disp(’Broj je jednak nuli’)
end
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Switch
Napisite koji broj od 1 do 5 je unijet. Ako nije od 1 do 5, napisite’Unijeti broj nije ispravan’.
broj = input(’Unesite broj od 1 do 5: ’);
switch broj
case 1
display(’Unijeti broj je 1’)
case 2
display(’Unijeti broj je 2’)
case 3
display(’Unijeti broj je 3’)
case 4
display(’Unijeti broj je 4’)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Switch - nastavak
case 5
display(’Unijeti broj je 5’)
otherwise
display(’Unijeti broj nije ispravan!’)
end
Napomena: naredbu switch koristimo samo ako uvjet kojiprovjerava postize konacan (mali) broj stanja. Ne mozemo gakoristiti ako je uvjet da je stanje vece ili manje od necega.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
For petlja
Primjer
data=[3 9 45 6; 7 16 -1 5];
for n = data
y = n(1) - n(2)
end
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
While petlja
Primjer
S=1;
n=1;
while S+(n+1)^2 < 100
n = n + 1;
S = S + n^2;
end;
[n, S]
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Napomena
Pogledati:continuebreakreturnerrortry - catch
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Nacin rada
Funkcije takoder mozemo spremiti u m-datoteku. Unutar jednem-datoteke moze biti vise funkcija, ali samo prvu (koja mora imatiime kao i datoteka) ce biti moguce pozvati izvana. Ostale funkcijeunutar m-datoteke su pomocne.Unutar skripte nije moguce definirati funkcije.Definicija funkcije:function [x_1, x_2, ...] = ime_fje(p_1, p_2, ...)
x_1, x_2, ... su povratne vrijednosti, a p_1, p_2, ...
parametri funkcije.Funkciju treba spremiti u datoteku ime_fje.m
Funkcija se iz konzole poziva sa:[var_1, var_2, ...] = ime_fje( arg_1, arg_2, ... )
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Primjer prvi
function s = sumakvadrata( v )
% Racuna sumu kvadrata svih elemenata vektor-retka v
if( size( v, 1 ) ~= 1 )
error( ’Funkciji nije poslan vektor-redak!’ );
end
s = 0;
for i = 1 : length( v )
s = s + kvadrat( v( i ) );
end
end
function k = kvadrat( x )
k = x .^ 2;
end
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Primjer - nastavak
U editoru (Desktop -> Editor)smo prethodni primjer napisali ispremili pod imenom sumakvadrata.m.U interaktivnoj konzoli pokrenemo:v = [2 5 1];
x = sumakvadrata( v );
x
Funkcija kvadrat nije dostupna iz konzole (to je podfunkcija).Funkcija sumakvadrata je glavna funkcija.MATLAB prosljeduje parametre po vrijednosti - dakle, funkcija nemoze promijeniti varijablu koja joj je poslana (stvara se lokalnakopija unutar funkcije).Dio iza % (pa do kraja retka) unutar funkcije je komentar. Mogucega je vidjeti naredbom help sumakvadrata
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Primjer drugi
Kreirajmo m-file koji racuna povrsinu trokuta sa stranicama a, b, cpo formuliP =
√(s ∗ (s − a) ∗ (s − b) ∗ (s − c)), s = (a + b + c)/2.
function P = povrsina(a,b,c)
s = (a+b+c)/2;
P = sqrt(s*(s-a)*(s-b)*(s-c))
Ukoliko ovaj m-file snimimo pod imenom povrsina.m pozivamo gau Matlabu na slijedeci nacin:povrsina(3,4,5)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Zadatak
Napisite skriptni M-file koji trazi od korisnika da upisuje brojevesve dok im je suma manja od 200. Ispisuju se svi unijeti brojevi ikoliko ih je.
suma=0;
br=0;
while suma < 200
br = br+1;
a(br) = input(’Upisi broj:’)
suma = suma + a(br);
end
a
br
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Zadatak
Napisite skriptni m-file koji trazi od korisnika da upisuje broj svedok ne upise broj djeljiv sa 7, ispise taj broj i koliko je brojevaupisano.
brojac = 0;
a = 1;
while mod(a, 7) ~= 0
a = input(’Unesite broj: ’);
brojac = brojac + 1;
end
a
brojac
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Zadatak
Kreirajte funkcijski m-file koji kao ulaznu varijablu prima prirodnibroj i ispisuje taj broj te sve njegove djelitelje.
function [broj, dj]=djelitelji(br)
br2=br; d=2; i=1; dj=[];
while br2>1
if mod(br2, d)==0
br2=br2/d; dj=[dj d];
else
d=d+1;
end
end
br
dj
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Anonymous funkcija
To je MATLAB funkcija definirana jednim MATLAB izrazom.Sintaksa za kreiranje je f = @(listaarg) izraz
Primjer
kvadrat = @(x) x.^2;
a = kvadrat(5)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Globalne varijable
Ako varijablu u funkciji proglasimo globalnom (naredba globalimevarijable), ona je dostupna svim funkcijama.Ako u interaktivnoj konzoli upisemo isto, varijabla je dostupna iglavnom radnom prostoru.
Primjer
Kreiramo funkciju mnozenjekonstantom
function a = mnozenjekonstantom(x)
golobal CONST
a = CONST * x;
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Globalne varijable - nastavak
Primjer
a u konzoli
global CONST
CONST = 10;
b = mnozenjekonstantom(5);
CONST = 20;
c = mnozenjekonstantom(5);
b
c
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
SkripteNaredbe grananjaFunkcije
Handle funkcije
Za bilo koju Matlab funkciju mozemo kreirati njezin handlepomocu kojeg se poslije mozemo referencirati na tu funkciju.Najcesce handle funkcije koristimo kao argument neke drugefunkcije, npr. prilikom crtanja grafova. U ovom slucaju handlefunkcije sin ce biti fhandle
Primjer
fhandle = @sin
f(5)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Plot - primjena
Plot funkcija ima razne forme, ovisno o input argumentima.
Primjer
x = 0 : pi/100 : 2*pi;
y = sin(x);
plot(x, y)
Ako zelim dodati oznake na osi i sam graf (tu smo i povecalislova), koristimo:
xlabel(’x = 0 : 2/pi’)
ylabel(’Sinus od x’)
title(’Graf funkcije sinus’, ’FontSize’, 12)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Vise funkcija na istom grafu
Primjer
x = 0 : pi/100 : 2*pi;
y = sin( x );
y2 = sin( x - .25 );
y3 = sin( x - .5 );
plot( x, y, x, y2, x, y3)
Vidimo da se razlicitim funkcijama pridruzuju razlicite boje.Mozemo sa strane staviti legendu koristecilegend(’sin(x)’, ’sin(x - .25)’, ’sin( x - .5)’)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Primjer - grafika sa dvije slike
Primjer
t = 0 : pi/20 : 2*pi;
y = exp(sin( t ));
plotyy(t, y, t, y, ’plot’, ’stem’)
xlabel(’X Axis’)
ylabel(’Plot Y Axis’)
title(’Two Y Axes’)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Koristenje radnog prostora
Grafiku mozemo kreirati i koristeci varijable iz radnog prostora.Izaberemo varijable iz radnog prostora (ako su uzastopne, mozemosa Shift+klik, ako nisu mozemo sa Ctrl+klik). Nakon togadesni klik misa nam daje izbor najcesce koristenih nacina crtanjagrafova. Ako zelimo neki drugi, kliknemo More Plots....Napomena: naredbu za crtanje tog grafa vidimo kao zadnjunaredbu u interaktivnoj konzoli.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Elementi grafa
Grafovi su komponirani od objekata. Oni imaju neka svojstva kojase mogu mijenjati. Ta svojstva odreduju kako neki dijelovi grafaizgledaju ili se ponasaju.Na primjer, osi kojima definiramo koordinatni sustav imaju svojstvapoput granice, medusobni odnos, naziv, boju, . . . Linije grafa imajusvojstva poput boje, tip markera koji se koristi za crtanje tocakakoje se koriste za crtanje grafa, stil linije, . . .
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Linije grafa
Kod linija grafa mozemo mijenjati boju, stil i markere. To se radisa opcijom ’boja_stil_marker’ na kraju naredbe Plot. Opcijasadrzi od jednog do cetiri znaka unutar navodnika.
Primjer
x = 0 : pi/100 : 2*pi;
y = sin(x);
plot(x, y)
plot(x, y, ’g--o’)
plot(x, y, ’b:d’)
plot(x, y, ’c-*’)
plot(x, y, ’ks’) (kada se ne specificira stil linije, crta se samomarker)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Primjer - markeri
Primjer
x1 = 0 : pi/100 : 2*pi;
x2 = 0 : pi/10: 2*pi;
plot(x1, sin(x1), ’r:’, x2, sin(x2), ’r+’)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Napomena - hold on
Kada crtamo novi graf, po defaultu se stari graf brise i na njegovomjesto dolazi novi. Ako zelimo novi graf samo dodati starom,moramo u konzolu unijeti naredbu hold on, a zatim unijeti novigraf.
Primjer
x = -1 : .1 : 1;
y = x.^3;
plot(x, y)
hold on
z = sin(x);
plot(x, z)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Vise slika, jedan graf
Naredba subplot(m, n, p) particionira prozor za grafiku na m × npolje manjih slika, a trenutni plot je p-ti (brojimo ih redak poredak).
Primjer
x = 0 : pi/100 : 2*pi;
y = sin( x );
z = cos( x );
u = x.^2;
v = x;
subplot(2, 2, 1); plot(x, y)
subplot(2, 2, 2); plot(x, z)
subplot(2, 2, 3); plot(x, u)
subplot(2, 2, 4); plot(x, v)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Osi
Po defaultu MATLAB sam bira vrijednosti na osima prema rubnimvrijednostima danih podataka. Ako zelimo promijeniti vrijednostina osima, koristimo naredbu axis.
Primjer
x = 0 : pi/100 : 2*pi;
y = sin(x);
plot(x, y)
axis([ -5 10 -2 2])
Ako zelimo vratiti postavke osi na pocetak koristimo naredbu axisauto normal.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Primjer - tekst unutar grafike
Primjer
text( 0.5, 0.5, ABC );
text( -2, 1, DEF );
set( gca, XLim, [-3, 3], YLim, [-1, 2] )
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Spremanje grafike
Za spremanje grafike koristimo:File -> Save as -> imegrafike, te izaberemo u kojemformatu je zelimo spremiti (npr. FIG-datoteka za MATLABgrafiku, JPG, EPS, . . . ).Ako zelimo spremiti grafiku sa nekim dodatnim opcijama (visinagrafike, sirina grafike, . . . ) koristimo:File -> Export Setup ... , zatim, nakon sto smo izabralineke dodatne opcije, koristimo Apply to Figure,Export -> imegrafike, te izaberemo format.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Generiranje koda grafike
Ako ne zelimo spremiti sam graf nego zelimo sacuvati kod koji jegenerirao grafiku, koristimo opciju na graficiFile -> Generate M-file. Kada zelimo koristiti taj kod zageneriranje grafa u interaktivnoj konzoli, samo unesemo imeM-filea.Paziti: sam kod nema definirane varijable. Njih treba unijeti ukonzoli. Pretpostavimo da smo kod grafike sin spremili u M-fileprimjer. Sada prije samog pozivanja iz konzole, kreiramovarijable koje treba, pa tek onda zovemo primjer sa argumentimakoje smo kreirali.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Plot (3D)
Za crtanje funkcije dvije varijable, prvo generiramo matrice X i Ykoje ce nam predstavljati domenu funkcije. Zatim koristimo X i Yza evaluaciju i crtanje grafike.
Primjer
x1 = linspace(-5, 5, 100);
y1 = linspace(-10, 10, 100);
[X, Y] = meshgrid(x1, y1);
Z = X.^2 + Y.^2;
mesh(X, Y, Z)
Pogledati: Camera Toolbar, Rotate 3D.
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Primjer
Jednoliku boju grafa biramo sa:mesh(X, Y, Z, ’EdgeColor’, ’green’)
Ako zelimo mijenjati boju grafa s obzirom na razinske krivulje,koristimo:
surf(X, Y, Z)
colormap hsv
colorbar
Na prozirnost grafa mozemo utjecati sa naredbom alpha(x), gdjeje x broj izmedu 0 i 1 npr.alpha(0.5)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Primjer - Property Editor
Unesemox = -1 : .1 : 1;
y = x.^3;
plottools
te izeberemo x i y varijable, te npr. funkciju plot. Drzimo lijeviklik na liniji grafa pritisnut sve dok se ne pojaviProperty Editor - Lineseries. Promijenimo tu neka svojstva(npr. line to no line, marker to o (circle), marker size to 4.0,marker fill color to red).Mozemo promijeniti i funkciju kojom crtamo (izaberemo varijableiz Variables na grafici, te zatim desnim klikom dobijamo funkcijeza crtanje, te izaberemo jednu (npr. area ili stem)
MATLAB
UvodMatrice
Skripte i funkcijeGrafika
Funkcija PlotMijenjanje elemenata grafaRad sa grafikom
Handle grafike
Prilikom kreiranja grafike u MATLABU, pridjeljuje mu se handle,identifikator te grafike. Koristeci taj handle, moze se pristupiti tojgrafici i njenim svojstvima.
Primjer
x = 0 : pi/100 : 2*pi;
y = sin(x);
a = plot(x, y)
set(a, ’Color’, ’red’)
b = plot(x, y, ’Color’, ’cyan’)
c = get(a, ’Color’)
d = get(b, ’Color’)
get(a, ’LineWidth’)
get(a)
MATLAB