matlab - mapmf.pmfst.unist.hrmapmf.pmfst.unist.hr/~gorerc/mpaii/matlab(dva dijela).pdf · uvod...
TRANSCRIPT
UvodMatrice
Skripte i funkcije
MATLAB
28. ozujka 2012.
MATLAB
UvodMatrice
Skripte i funkcije
Table of contents
1 Uvod
2 MatriceVarijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
3 Skripte i funkcijeSkripteNaredbe grananjaFunkcije
MATLAB
UvodMatrice
Skripte i funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
Varijable, brojevi, ugradene funkcijeStrukture podatakaSimbolicko racunanje
Operatori
+ zbrajanje- oduzimanje* mnozenje/ dijeljenje\ dijeljenje slijeva^ potencija’ adjungiranje
MATLAB
UvodMatrice
Skripte i funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
SkripteNaredbe grananjaFunkcije
Petlje2
for brojac = vektor-redak
naredba_1;
naredba_2;
end
while uvjet
naredba_1;
naredba_2;
end
MATLAB
UvodMatrice
Skripte i funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
SkripteNaredbe grananjaFunkcije
Napomena
Pogledati:continuebreakreturnerrortry - catch
MATLAB
UvodMatrice
Skripte i funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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 funkcije
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