Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

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 x/(ex-1) 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

Siehe auch

Themen