Next: 3.3 Petlje i uvjetne
Up: 3. Programi i funkcije
Previous: 3.1 Skripte
Kod funkcijskih datoteka varijable su lokalne i nema ih u radnom
prostoru i zato možemo reći da je funkcija na neki način crna
kutija. Funkcijska datoteka komunicira s radnim prostorom samo
preko varijabli ulaza i varijabli izlaza3.2.
Osnovna forma funkcijske M-datoteke dana je na slici (3).
Slika 3:
Propisana forma funkcijske M-datoteke
function [izl1,izl2,...] = imedatoteke
(ul1,ul2,...)
% ovo je kratki opis funkcijske m-datoteke
% komentar za
dokumentaciju...
% sve ono sto je iza '%' je komentar
% ovaj komentar
se vidi u kom.prozoru ako se ukuca
% help imedatoteke
%
ova funkcija je spremljena u datoteku:
% imedatoteke.m
%
...
...
|
|
Glavni element je prva linija u kojoj se definira funkcija sa svojim imenom (to ime
određuje i ime datoteke u kojoj je spremljena funkcija), ulaznim i izlaznim
varijablama. Nakon nje slijedi niz komentar linija koje predstavljaju help
funkcije i pri tome je prva od njih (naziva se H1 linija) posebna jer se ona
pretražuje naredbom lookfor i uobičajeno je da sadrži ime i kratki
opis funkcije. Nakon komentar linija slijedi samo tijelo funkcije.
Uz pretpostavku da je funkcijska M-datoteka (imedatoteke.m) smještena u MATLAB-ovu path-u
funkcija se izvršava pozivom u MATLAB-ovu komandnom
prozoru (ili u nekoj drugoj M-datoteci) na sljedeći
način:
>> [izl1,izl2,...] = imedatoteke(ul1,ul2,...)
pri čemu su ul1,ul2,... ulazne varijable, a
izl1,izl2,... izlazne. Izvršavanje funkcijske .m
datoteke se ne preporuča direktno iz editora budući da nemamo
kontrolu nad
ulaznim varijablama.
Analizirajmo funkcijske M-datoteke na primjeru
funkcije average.m koja određuje srednju vrijednost za elemente
jednog vektora. Pri tome ulazna varijabla ne smije biti skalar ili matrica.
function a = average(b)
% AVERAGE Srednja vrijednost elemenata vektora.
% AVERAGE(B), gdje je B vektor, predstavlja srednju
% vrijednost elemenata vektora.
% Za ne-vektorski ulaz funkcija dojavljuje gresku.
[m,n] = size(b);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error('Ulaz mora biti vektor!')
end
a = sum(b)/length(b); % izracun srednje vrijednosti
U komandnom prozoru funkciju pozivamo na sljedeći način
>> y=average(x)
y =
0.7850
- ... izlaza3.2
- Funkcije ne koriste radnu
memoriju (engl. base workspace) već je područje dosega memorije funkcije
ograničeno - one imaju svoju vlastitu memoriju, engl. workspace.
Prosljeđivanje varijabli iz radne memorije u memoriju funkcije je najsigurnije
preko ulazno-izlaznih varijabli. No postoje i drugi način o kojim će biti
više riječi kasnije.
Next: 3.3 Petlje i uvjetne
Up: 3. Programi i funkcije
Previous: 3.1 Skripte
Milan Vrdoljak, 2007-10-15