
Le funzioni anonime su Matlab
In questa lezione ti spiego come creare le funzioni anonime su Matlab.
Cos'è una funzione anonima? E' una funzione matematica con una o più variabili che definisci senza assegnargli un nome dentro altre funzioni. Sono dette "anonime" perché non hanno un nome. Puoi usarle soltanto dentro le funzioni composte in cui si trovano.
Per creare una funzione anonima su Matlab utilizza questa sintassi
nome@(variabili) espressione
Scrivi il simbolo @ con le variabili indipendenti della funzione tra le parentesi tonde
Poi dopo uno spazio scrivi l'espressione della funzione.
A cosa serve una funzione anonima? Le funzioni anonime sono molto utili quando devi creare una routine che dovrai usare in una sola occasione all'interno di uno script. In questo modo eviti di dover definire un'altra funzione nello script. Lo script diventa più compatto e occupa meno spazio di memoria.
Ti faccio un esempio pratico.
Questo script eleva al quadrato gli elementi di un array
A = [1, 2, 3, 4, 5];
B = arrayfun(@(x) x^2, A);
disp(B);
La funzione arrayfun() utilizza la funzione anonima @(x) x^2 per elevare al quadrato ogni elemento del vettore A.
La funzione anonima non ha un nome. Puoi usarla soltanto dentro la funzione arrayfun(). Al di fuori non è visibile.
Il risultato viene salvato nella variabile B e stampato tramite la funzione disp().
1 4 9 16 25
Sono i quadrati degli elementi del vettore A
Puoi usare le funzioni anonime anche come funzioni classiche
In questo caso devi assegnargli un nome prima del simbolo @
Ad esempio, definisci questa funzione anonima
>> f = @(x,y) x^2+y^2
La funzione si chiama f ed è una funzione che ha due variabili indipendenti (x,y) e l'espressione x2+y2
$$ f(x,y) = x^2+y^2 $$
Nota. In questo esempio la funzione si chiama "f" ma può chiamarsi in qualsiasi altro modo.
Dopo aver definito la funzione f(x,y) puoi invocare la funzione più volte passandogli dei parametri diversi.
Ad esempio, digita f(2,3) sulla riga di comando e premi invio
>> f(2,3)
La funzione riceve i parametri x=2 e y=3 e li assegna alle variabili indipendenti.
Poi calcola e visualizza il risultato dell'espressione x2+y2.
ans = 13
Il risultato della funzione è 13 perché svolgendo l'espressione con i valori assegnati ottieni 13
$$ f(x=2,y=3) = x^2 + y^3 = 2^2 + 3^2 = 4+9 = 13$$
Ora, invoca nuovamente la funzione passandogli dei parametri differenti.
Ad esempio, digita f(3,4)
>> f(3,4)
La funzione riceve i parametri x=3 e y=4 e li assegna alle variabili x e y.
Effettua il calcolo dell'espressione e restituisce 25
ans=25
Il risultato della funzione è 25 perché
$$ f(x=3,y=4) = x^2 + y^3 = 3^2 + 4^2 = 9+16 = 25 $$