Contenuto principale

Passaggio della funzione a un'altra funzione

È possibile utilizzare gli handle della funzione come argomenti di input per altre funzioni, chiamate funzioni di funzioni. Queste funzioni valutano espressioni matematiche su un intervallo di valori. Le tipiche funzioni di funzioni comprendono integral, quad2d, fzero e fminbnd.

Ad esempio, per trovare l'integrale del log naturale da 0 a 5, passare un handle alla funzione log a integral.

a = 0;
b = 5;
q1 = integral(@log,a,b)
q1 = 
3.0472

Analogamente, per trovare l'integrale della funzione sin e della funzione exp, passare gli handle a tali funzioni a integral.

q2 = integral(@sin,a,b)
q2 = 
0.7163
q3 = integral(@exp,a,b)
q3 = 
147.4132

Inoltre, è possibile passare un handle a una funzione anonima alle funzioni di funzioni. Una funzione anonima è una funzione MATLAB® basata su un'espressione di una riga che non richiede un file di programma. Ad esempio, valutare l'integrale di x/(ex-1) nell'intervallo [0,Inf]:

fun = @(x)x./(exp(x)-1);
q4 = integral(fun,0,Inf)
q4 = 
1.6449

Le funzioni che ricevono una funzione come input (chiamate funzioni di funzioni) richiedono che la funzione associata all'handle della funzione abbia un certo numero di variabili in input. Ad esempio, se si chiama integral o fzero, la funzione associata all'handle della funzione deve avere esattamente una variabile di input. Se si chiama integral3, la funzione associata all'handle della funzione deve avere tre variabili di input. Per informazioni sulla chiamata di funzioni di funzioni con più variabili, vedere Parameterizing Functions.

È possibile scrivere funzioni che accettano handle della funzione esattamente come si scrivono funzioni che accettano altri tipi di input. Scrivere una funzione che raddoppi l'output dell'handle della funzione di input per un dato input.

function x = doubleFunction(funHandle,funInput)
    x = 2*funHandle(funInput);
end

Testare questa funzione fornendo un handle della funzione come input.

x = doubleFunction(fun,4)
x = 
0.1493

Vedi anche

Argomenti