Professional Documents
Culture Documents
Matlab BG PDF
Matlab BG PDF
PROGRAMIRANJE
Programiranje u MATLAB-u
Newton-ov algoritam
Nula
f ( xn )
f '( xn )
xn 1
xn2 a
xn2 a
1
a
xn
xn
2 xn
2 xn
2
xn
Izaberimo
x1=1 i naimo
>> whos
Name
x1
x2
x3
x4
x5
Size
1x1
1x1
1x1
1x1
1x1
Bytes Class
8
8
8
8
8
Attributes
double
double
double
double
double
Skript datotekaFunkcija
Efikasnije je vrednosti ulaznih parametara zadavati pri
startovanju skript datoteke, odnosno ugraditi u poziv funkcije
>> newton(5)
x5 =
2.2361
>>
Skript datotekaFunkcija
Slino, funkcija koja ima izlazni parametar moe biti deo izraza
>> (1+newton)/2
Unesite vrednost podkorene velicine: 5
ans =
1.6180
Matlab funkcija
Preporuka je da
Ime funkcije bude isto kao i ime M-datoteke
Poslednja naredba funkcije bude end naredba
error funkcija
prekida
izvravanje i
ispisuje poruku
o greci
Poziv
%
%
...
out1=
Naredbe
MATLAB-a
...
out2=
...
end
[y1,y2,] = moja(x1,x2,)
Poziv funkcije
>> zeros(2)
ans =
0 0
0 0
>>
>> zeros(1, 2)
ans =
0 0
>>
Primer
function c = addme(a,b)
if nargin==2
% dati su i a i b
c = a + b;
elseif nargin==1
% dato je samo a
c = a + a;
else
% vrati 0
c = 0;
end
end % kraj tela funkcije
absdif = abs(dif);
end
end % kraj tela funkcije
>> f=inline('sin(2.*a+pi/3)')
f=
Inline function:
f(a) = sin(2.*a+pi/3)
>> f([1:3])
ans =
0.0943 -0.9445 0.6918
>>
anonimna funkcija
>> f=@(u,v) exp(-u).*sin(v)
f=
@(u,v)exp(-u).*sin(v)
>> f([1:3], 0:pi/4:pi/2)
ans =
0 0.0957 0.0498
>>
Radni prostor
Tok izvravanja
1. Sekvencijalno izvravanje
Naredbe se izvravaju
jedna za drugom prema
redosledu navodjenja u
programskom tekstu
Tok izvravanja
2. Uslovno izvravanje
NO
test
YES
U zavisnosti od
rezultata testa izvrava
se jedan programski
blok
Tok izvravanja
3. Iterativno izravanje
Nakon to se izvri
programski blok ide
se na njegovo
ponovno izvravanje
ponovi
if naredba
if izraz_1
blok_1
elseif izraz_2
blok_2
......
elseif izraz_k
blok_k
else
blok
end
Primer: sign(x)
x = input('Unesite x: ');
if x<0
y=-1;
elseif x==0
y=0;
else
y=1;
end
disp(['sign(' num2str(x) ')=' num2str(y)]);
switch naredba
switch izraz
case vrednost_1
blok_1
case vrednost_2
blok_2
......
case vrednost_k
blok_k
otherwise
blok
end
a=rand(1,20);
suma=0;
for i=[1,4,9,11,18]
suma=suma+a(i);
end
suma
break, continue
continue
Prekida
iteraciju
Vektorizacija
Sve Matlab funkcije su optimizovane za
vektorske operacije. Samim tim vektorizovani
kod se znaajno bre izvrava
Vektorizacija se odnosi na nain izvravanja
takav da se operacija simultano izvrava na
nizu vrednosti a ne pojedinano na svakom
elementu niza
Na primer y=sin(1:100) je vektorizovana
naredba za razliku od naredbe
y1=sin(1),y2=sin(2),
Petlje u Matlab-u
Brisanje radnog prostora
% U for petlji formirajmo niz korena brojeva od 1 do 1000
clear;
tic;
Startovanje tajmera
for i=1:1000
b(i)=sqrt(i);
end
t=toc;
Petlje u Matlab-u
Korienje vektorskih operacija umesto petlji znaajno ubrzava
izvravanje
Brisanje radnog prostora
% Formirajmo niz korena brojeva od 1 do 1000 koristei
Startovanje tajmera
b=sqrt(1:1000);
t=toc;