Function m-file
Un function file di Matlab è un m-file che differisce da uno script m-file perchè comincia sempre con la parola chiave function.
Per esempio:
% spiegazione di cosa fa la funzione
% le righe che cominciano con la percentuale sono
% considerate commenti e non vengono eseguite
function [y]=fun(x)
y=x^2+3*x^2+2;
Il nome dell'm-file che contiene la funzione deve avere lo stesso nome della funzione, quindi il file che conterrà questa funzione si chiamerà fun.m.
Per poter essere utilizzata da uno script m-file deve essere contenuto nella stessa directory.
Per esempio, l'm-file prova.m che utilizza la funzione mediariga e l'm-file mediariga.m che la contiene si devono trovare nella stessa directory.
mediariga.m
% La funzione mediariga esegue la media dei valori
% contenuti nel vettore v solo se questo è un vettore
% riga, altrimenti restituisce -1
function [m]=mediariga(v)
[r,c] = size(v);
if ( r==1 && c~=1 )
m = mean(v);
else
m = -1;
end
prova.m
clear
vriga = [1 23 15 -4]
m = mediariga(vriga);
str = ['La media è ',num2str(m)];
disp(str);
vcolonna = vriga.'
m = mediariga(vcolonna);
str = ['La media è ',num2str(m)];
disp(str);
vriga =
1 23 15 -4
La media è 8.75
vcolonna =
1
23
15
-4
La media è -1
Sintassi
La sintassi per dichiarare una funzione è:
function [out1, out2, ...] = funname(in1, in2, ...)
che definisce la funzione funname che accetta in ingresso in1, in2, ... ecc. e restituisce out1, out2, ... ecc.
A differenza di C dove le variabili sono passate per valore e strutture dati come i vettori e le matrici sono passati per riferimento, in Matlab i valori vengono sempre passati per valore, quindi vengono create copie locali (che quindi spariscono alla fine dell'esecuzione della funzione) di valori, vettori e matrici.
Un'altra differenza sostanziale rispetto a C (dove le funzioni restituiscono un solo valore numerico) è che una funzione può restituire più di un valore, ma anche vettori e matrici.