
Le funzioni su Matlab
In questa lezione ti spiego come si crea una funzione in Matlab.
Cos'è una funzione? Una funzione è un blocco di codice che puoi richiamare più volte da diverse parti dello script. In questo modo eviti di scrivere la stessa routine più volte. Le funzioni rendono il codice più leggibile, compatto e ordinato.
Per definire una funzione in Matlab devi usare questa sintassi
function [y1, y2, ... ] = nomefunzione([x1,x2,...])
codice da eseguire
end
- I termini x1,x2... sono i valori che la funzione riceve in input dalla chiamata (parametri).
- I termini y1,y2... sono i valori di ritorno che la funzione restituisce in output.
Una volta definita la funzione, puoi richiamarla più volte da diversi punti del programma.
A differenza di altri linguaggi di programmazione su Matlab devi definire la funzione sempre alla fine dello script.
Nota. In Matlab le chiamate alla funzione vanno inserite sempre prima della definizione della funzione. In caso contrario lo script restituisce un errore. Quindi, la definizione della funzione non deve mai trovarsi all'inizio dello script.
Ti faccio un esempio pratico
Inizia a scrivere lo script con un'operazione di calcolo qualsiasi. Ad esempio con 1;
Crea una funzione con nome media()
function y = media(x1,x2)
y = (x1+x2)/2;
end
Come funziona?
- La funzione riceve in ingresso due valori numerici x1 e x2
- Calcola la media dei due numeri e la registra nella variabile y.
- Infine, la funzione restituisce la media aritmetica y al programma chiamante.
Ora aggiungi nel programma una chiamata alla funzione media() con due valori 2 e 4
m=media(2,4);
disp(m);
function y = media(x1,x2)
y = (x1+x2)/2;
end
Nota. Ricordati sempre che in Matlab le funzioni devono essere definite alla fine dello script. Quindi, la chiamata media(2,4) devi inserirla prima della definizione della funzione media().
La funzione riceve i due valori in ingresso x1=2 e x2=4
Poi calcola la media y=(2+4)/2 e restituisce il risultato y=3
Lo script stampa sullo schermo la media dei due numeri
3
Ora aggiungi una seconda chiamata alla funzione con due valori diversi.
Ad esempio, 4 e 6
m=media(2,4);
disp(m);
m=media(4,6);
disp(m);
function y = media(x1,x2)
y = (x1+x2)/2;
end
Ora il programma chiama la funzione media() due volte da due punti diversi.
- La prima volta passa i valori 2 e 4 ricevendo come valore di ritorno 3.
- La seconda volta passa i valori 4 e 6 ricevendo come valore di ritorno 5.
Pertanto, l'output del programma è
3
5
Come ottenere più valori di ritorno dalla funzione?
La funzione può restituire anche più valori di ritorno.
Ad esempio, definisci la funzione [y1,y2] = potenza(x)
[y1,y2]=potenza(2);
disp(y1);
disp(y2);
function [y1, y2] = potenza(x)
y1=x^2;
y2=x^3;
end
In questo caso la funzione riceve in ingresso un solo valore numerico (x) restituendo in uscita due valori (y1 e y2).
- La chiamata [y1,y2] = potenza(2) passa il valore x=2 alla funzione.
- La funzione potenza() riceve il valore x=2, calcola il quadrato e il cubo, restituisce i due risultati in uscita.
- Lo script chiamante riceve i due valori di ritorno dalla funzione e li memorizza nelle variabili y1=4 e y2=8
L'output del programma è il seguente
4
8
A cosa serve l'istruzione return?
L'istruzione return ti permette di anticipare la chiusura della funzione e la restituzione dei valori di ritorno al programma chiamante.
Ti faccio un esempio pratico.
[y1,y2]=potenza(-2);
disp(y1);
disp(y2);
function [y1, y2] = potenza(x)
if x<0
y1=0
y2=0
return
end
y1=x^2;
y2=x^3;
end
Quando Matlab incontra l'istruzione return restituisce i risultati y1=0 e y2=0 e termina l'esecuzione della funzione.
In questo caso la funzione termina prima di calcolare il quadrato e il cubo del valore x.
Pertanto, l'output della funzione è
0
0
L'istruzione return ti permette di modificare il comportamento della funzione a seconda della situazione