Eine Funktion einer weiteren Funktion übergeben
Sie können Function Handles als Eingabeargumente für andere Funktionen verwenden; diese werden auch als Function Functions bezeichnet. Diese Funktionen berechnen mathematische Ausdrücke über einen Wertebereich hinweg. Typische Function Functions umfassen integral
, quad2d
, fzero
und fminbnd
.
Um das Integral des natürlichen Logarithmus von 0 bis einschließlich 5 zu ermitteln, übergeben Sie der Funktion integral
einen Handle für die Funktion log
.
a = 0; b = 5; q1 = integral(@log,a,b)
q1 = 3.0472
Ein weiteres Beispiel: Um das Integral der Funktion sin
und der Funktion exp
zu ermitteln, übergeben Sie Handles für diese Funktionen an integral
.
q2 = integral(@sin,a,b)
q2 = 0.7163
q3 = integral(@exp,a,b)
q3 = 147.4132
Zudem können Sie Function Functions einen Handle für eine anonyme Funktion übergeben. Eine anonyme Funktion ist eine einzeilige, ausdrucksbasierte MATLAB®-Funktion, die keine Programmdatei erfordert. Beispielsweise können Sie das Integral von im Bereich [0,Inf]
berechnen:
fun = @(x)x./(exp(x)-1); q4 = integral(fun,0,Inf)
q4 = 1.6449
Funktionen, die eine Funktion als Eingabe akzeptieren (auch als Function Functions bezeichnet) erwarten von der mit dem Function Handle verknüpften Funktion eine bestimmte Anzahl an Eingabevariablen. Wenn Sie beispielsweise integral
oder fzero
aufrufen, muss die mit dem Function Handle verknüpfte Funktion genau eine Eingabevariable aufweisen. Wenn Sie integral3
aufrufen, muss die mit dem Function Handle verknüpfte Funktion drei Eingabevariablen aufweisen. Informationen zum Aufrufen von Function Functions mit mehr Variablen finden Sie unter Parameterizing Functions.
Sie können Funktionen, die Function Handles akzeptieren, auf dieselbe Weise erstellen wie Funktionen, die andere Eingaben akzeptieren. Schreiben Sie eine Funktion, die für eine beliebige Eingabe die Ausgabe des übergebenen Function Handles verdoppelt.
function x = doubleFunction(funHandle,funInput) x = 2*funHandle(funInput); end
Testen Sie diese Funktion, indem Sie einen Function Handle als Eingabe übergeben.
x = doubleFunction(fun,4)
x = 0.1493