Professional Documents
Culture Documents
.
Reenje ovog primera je:
k = i nput ( ' k i znosi : ' ) ;
s = 0; n = 1;
whi l e n <= k,
s = s+1/ n;
n = n+1;
end
3.4 Pisanje funkcija u Matlabu
Jedna od pogodnosti Matlaba je to korisniku prua mogunost kreiranja sopstvenih
funkcija. One se u daljem radu tretiraju isto kao i funkcije koje su deo samog programa ili pripadaju
nekom od Toolboxova. Fajlovi koji sadre korisnike funkcije nazivaju se jo i funkcijski fajlovi i
piu se na isti nain kao i programi (skripte). Jedina razlika izmeu fajla koji sadri funkciju i fajla
koji sadri program (skriptu) jeste to to funkcijski fajl u prvoj liniji obavezno mora da sadri
deklaraciju funkcije koja poinje naredbom f unct i on. Pisanje korisnikih funkcija se moe
ilustrovati na sledeem primeru:
Primer 16.
Napisati funkciju f akt , koja rauna faktorijel zadatog broja.
Oblik traene funkcije je y = f akt ( n) , gde je n ulazni argument (broj iji se faktorijel
rauna), a izlaz iz funkcije je izraunata vrednost faktorijela. Program koji realizuje funkciju f akt
izgleda ovako:
18
f unct i on y = f akt ( n)
%Funkci j a y = f akt ( n) , r acuna f akt or i j el br oj a n i dodel j uj e ga
%pr omenl j i voj y. Ako j e n<0 na ekr anu se i spi suj e por uka
%o gr eci , a pr omenl j i voj y se ne dodel j uj e ni kakva vr ednost .
i f n<0,
di sp( ' Gr eska. Fakt or i j el negat i vnog br oj a ni j e def i ni san. ' )
y=[ ] ; %y j e pr azan vekt or
r et ur n %i zl azak i z pr ogr ama
end
y = 1; i nd = n;
whi l e ( i nd>0) ,
y = y*i nd;
i nd = i nd- 1;
end
Nakon to se napie funkcijski fajl (korienjem bilo kog editora), on mora da se sauva pod
imenom i me_f unkci j e. m. Dakle funkcijski fajl mora da ima isto ime kao i funkcija koja je u
njemu deklarisana. Nakon toga, funkcija moe da se upotrebljava kao i sve druge funkcije ugraene
u Matlab. Tako na primer, kucanjem u komandnoj liniji:
>> f akt ( 5)
na ekranu se dobija:
ans =
120
ili sa:
>> z = f akt ( 3) ;
promenljivoj z se dodeljuje vrednost 6, bez ispisa na ekranu. Ukoliko se kao ulazni argument zada
broj koji je manji od nule (to ispituje i f pitalica u programu) na ekranu e se pojaviti sledea
poruka:
Gr eska. Fakt or i j el negat i vnog br oj a ni j e def i ni san.
to je ostvareno naredbom di sp( ' Gr eska. Fakt or i j el negat i vnog br oj a ni j e
def i ni san. ' ) . U optem sluaju, naredba di sp na ekranu tampa tekst koji se nalazi izmeu dva
znaka ' . Ova naredba moe da se iskoristi i za tampanje vrednosti neke promenljive. U tom
sluaju se kao argument navodi samo ime promenljive, npr. di sp( z) . U sluaju da se u komandnoj
liniji Matlaba otkuca hel p f akt , na ekranu e se dobiti komentar koji sledi posle deklaracije
funkcije.
3.5 Efikasnost izvravanja programa u Matlabu
Matlab pripada grupi interpreterskih programskih jezika. Kada se naredba unosi kucanjem u
komandnom prozoru, ona se prvo interpretira a zatim izvrava. Ako se radi o programu, onda se
naredbe redom uitavaju, interpretiraju i izvravaju. Ukoliko u programu postoje petlje, svaka
instrukcija u petlji se u svakom prolazu uitava, interpretira i izvrava. U sluaju kada se radi sa
velikim koliinama podataka, kakav je sluaj u obradi govora ili slike, to moe ozbiljno poveati
vreme izvrenja programa. Stoga je od interesa razmotriti mehanizme za procenu sloenosti
programa i naine za popravljanje efikasnosti programa.
3.5.1 Merenje vremena izvravanja programa
Merenje vremena izvravanja programa, ili dela programa, u Matlabu je omogueno
korienjem naredbi t i c i t oc. One se primenjuju na sledei nain:
t i c
{
bl ok nar edbi
t oc
19
Prvom naredbom t i c se aktivira merenje vremena (toperica). Druga naredba t oc oitava
sadraj brojaa bez resetovanja. Resetovanje brojaa se vri novom naredbom t i c. Naredba t oc
moe imati i oblik t = t oc, ime se omoguava pamenje prolaznih vremena tokom izvravanja
nekog sloenog programa
Primer 17.
Generisati matricu sluajnih brojeva 100100, invertovati je i izmeriti vreme izvrenja programa.
Reenje problema je:
t i c
a = r and( 100) ;
b = i nv( a) ;
t oc
Izvravanjem ovog programa dobija se na ekranu rezultat:
El apsed t i me i s 0. 140000 seconds.
3.5.2 Poveanje efikasnosti izvravanja programa
Radi poveanja efikasnosti izvravanja programa, to je od ogromne vanosti kod realizacije
sloenih algoritama, potrebno je izbegavati upotrebu programskih petlji to je vie mogue. Da bi
ilustrovali potrebu za izbegavanjem programskih petlji posmatrajmo generisanje odbiraka diskretne
sinusoide pomou programa:
f or t =1: 5000
y( t ) = si n( 2*pi *t / 10) ;
end
Merenjem vremena izvrenja ovog programa dobija se vreme od 0.18 s. Ako sada umesto
5000 odbiraka generiemo 20000 odbiraka sinusoide, novo vreme izvrenja e biti 2.1 s, dakle ne
etiri nego 11.7 puta due. Razlog za to je dinamiko poveanje duine vektora y, za po jedan u
svakom prolazu kroz petlju.
Postoji jednostavan nain za ubrzanje izvrenja opisanog programa. Ako se pre ulaska u
petlju rezervie prostor u memoriji za ceo vektor (ili matricu), to se nalake izvodi naredbom za
popunjavanje nulama, program se znaajno ubrzava, tako da je vreme izvrenja programa:
y = zer os( 1, 20000) ;
f or t =1: 20000
y( t ) = si n( 2*pi *t / 10) ;
end
samo 0.16 s, dakle ak krae nego za poetnu verziju programa sa 5000 odbiraka.
Jo bre izvrenje se moe postii potpunim izbegavanjem izraunavanja u petlji:
y = zer os( 1, 20000) ;
t = 1: 20000;
y = si n( 2*pi *t / 10) ;
Ovaj program traje samo 0.04 s.
4. Dodatne funkcije
Osim elementarnih matematikih funkcija, koje su prikazane u dosadanjem izlaganju, u
Matlabu je implementiran izuzetno veliki broj razliitih funkcija: za analizu i obradu podataka, za
rad sa polinomima, funkcije koje se koriste u obradi signala, numerikoj analizi, linearnoj algebri,
statistici, itd. Jedan broj jednostavnijih funkcija nalazi se u osnovnom Matlab modulu, dok su ostale
grupisane u posebne specijalizovane module (tzv. Toolboxove) koji se nezavisno nabavljaju. Tako
postoje Signal Processing Toolbox (za primenu u digitalnoj obradi signala), Control System
Toolbox (za primenu u sistemima upravljanja), Identification Toolbox (za primenu u identifikaciji
20
sistema), Neural Network Toolbox (za rad sa neuralnim mreama), Image Processing Toolbox (za
primenu u digitalnoj obradi slike), Optimization Toolbox (za reavanje razliitih linearnih i
nelinearnih problema), Statistics Toolbox (za primenu u statistici), itd. Broj funkcija koje su
implementirane u Matlabu je toliko veliki da ak i iskusni korisnici ne koriste niti znaju sve
postojee funkcije. Meutim, kada se jednom prihvati nain rada sa programom i usvoje
elementarne operacije, sve sloenije komande i funkcije se otkrivaju i usvajaju izuzetno brzo i lako
(za ta se esto koristi naredba hel p). Za poetnike u radu sa Matlabom, u Tabelama 4, 5 i 6 su
navedene neke od jednostavnijih funkcija, koje nisu pominjane u ovom tekstu.
Tabela 4: Funkcije za rad sa matricama.
expm, l ogm i sqr t m stepenovanje, logaritam i koren matrice
det determinanta matrice
nor m norma matrice
r ank rang matrice
pol y, ei g karakteristini polinom i sopstvene vrednosti matrice
i nv inverzija matrice
or t h ortogonalizacija matrice
pi nv pseudonverzija matrice
qr ortogonalnotrougaona dekompozicija
r r ef kanonika forma matrice
svd dekompozicija preko singularnih vrednosti
Tabela 5: Neke od funkcija za analizu podataka.
max maksimalna vrednost
mi n minimalna vrednost
mean srednja vrednost
st d standardna devijacija
sum suma elemenata vektora
di f f aproksimacija diferencijala
cor r coef koeficijent korelacije
pr od skalarni proizvod
cov kovarijansna matrica
Tabela 6: Neke od funkcija za rad sa polinomima.
r oot s izraunavanje korena polinoma
pol y izraunavanje koeficijenata polinoma iz korenova
pol yval izraunavanje vrednosti polinoma
conv mnoenje polinoma
deconv deljenje polinoma
pol yf i t interpolacija polinomom