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