Hauptinhalt

Erstellen von Function Handles

Was ist ein Function Handle?

Function Handles sind MATLAB®-Datentypen, in denen eine Verknüpfung mit einer Funktion gespeichert ist. Eine Funktion indirekt aufzurufen, ermöglicht es Ihnen, diese Funktion unabhängig vom Ort im Programm aufzurufen. Übliche Verwendungszwecke von Function Handles umfassen:

  • Eine Funktion einer weiteren Funktion übergeben (oft als Function Functions bezeichnet). Sie können beispielsweise eine Funktion an Integrations- und Optimierungsfunktionen wie integral und fzero übergeben.

  • Callback-Funktionen festlegen (z. B. ein Callback, der auf ein UI-Ereignis reagiert oder mit Datenerfassungs-Hardware interagiert).

  • Handles für inline festgelegte statt in einer Programmdatei gespeicherte Funktionen (anonyme Funktionen) erstellen.

  • Lokale Funktionen außerhalb der Hauptfunktion aufrufen.

Sie können mithilfe von isa(h,'function_handle') sehen, ob eine Variable h ein Function Handle ist.

Erstellen von Function Handles

Um einen Handle für eine Funktion zu erstellen, setzen Sie das Zeichen @ vor den Funktionsnamen. Wenn Sie Ihre Funktion beispielsweise als myfunction bezeichnet haben, erstellen Sie folgendermaßen einen Handle namens f:

f = @myfunction;

Sie können eine Funktion mithilfe eines Handles auf dieselbe Weise wie direkt aufrufen. Nehmen wir beispielweise an, dass Sie die folgende Funktion namens computeSquare haben:

function y = computeSquare(x)
y = x.^2;
end

Handle erstellen und die Funktion aufrufen, um das Quadrat von 4 zu berechnen.

f = @computeSquare;
a = 4;
b = f(a)
b =

    16

Wenn die Funktion keine Eingaben benötigt, können Sie die Funktion mit leeren Klammern aufrufen, wie beispielsweise

h = @ones;
a = h()
a =

    1

Ohne Klammern wird durch diese Zuweisung ein weiterer Function Handle erstellt.

a = h
a = 

    @ones

Function Handles sind Variablen, die Sie anderen Funktionen übergeben können. Beispielsweise können Sie das Integral von x2 im Bereich [0,1] berechnen.

q = integral(f,0,1);

Für Function Handles wird der absolute Pfad gespeichert; mit einem gültigen Handle können Sie also die Funktion von jedem Ort im Programm aus aufrufen. Sie müssen bei der Erstellung des Handles nicht den Pfad zur Funktion angeben, nur den Funktionsnamen.

Beachten Sie bei der Erstellung von Function Handles Folgendes:

  • Länge des Namens: Jeder Teil des Funktionsnamens (einschließlich Package- und Klassennamen) muss kürzer als die von namelengthmax angegebene Zahl sein. Andernfalls wird MATLAB den letzten Teil des Namens kürzen.

  • Scope: Die Funktion muss sich bei der Erstellung des Handles im Scope befinden. Die Funktion muss sich also im MATLAB-Pfad oder im aktuellen Ordner befinden. Für Handles für lokale oder verschachtelte Funktionen muss die Funktion sich also in der aktuellen Datei befinden.

  • Rangfolge: Gibt es mehrere Funktionen mit demselben Namen, verwendet MATLAB zum Festlegen von Function Handles dieselben Rangfolgeregeln wie zum Aufrufen von Funktionen. Weitere Informationen finden Sie unter Function Precedence Order.

  • Überladung: Wird ein Function Handle mit einem oder mehreren Argumenten aufgerufen, legt MATLAB das dominante Argument fest. Ist das dominante Argument ein Objekt, ermittelt MATLAB, ob die Klasse des Objekts über eine Methode verfügt, die denselben Namen wie die mit dem Function Handle verknüpfte Funktion überlädt. Ist dies der Fall, wird die Methode des Objekts statt die verknüpfte Funktion aufgerufen.

Anonyme Funktionen

Sie können Handles für anonyme Funktionen erstellen. Eine anonyme Funktion ist eine einzeilige, ausdrucksbasierte MATLAB-Funktion, die keine Programmdatei erfordert. Um einen Handle für eine anonyme Funktion zu erstellen, legen Sie den Funktionsrumpf anonymous_function sowie eine kommagetrennte Liste der Eingabeargumente für die anonyme Funktion arglist fest. Die Syntax lautet wie folgt:

h = @(arglist)anonymous_function

Beispiel: Erstellen eines Handles sqr für eine anonyme Funktion, die das Quadrat einer Zahl berechnet, und Aufrufen der anonymen Funktionen über ihren Handle.

sqr = @(n) n.^2;
x = sqr(3)
x =

     9

Weitere Informationen finden Sie unter Anonyme Funktionen.

Arrays von Function Handles

Sie können ein Array von Function Handles erstellen, indem Sie diese in einem Zellen- oder Struktur-Array zusammenstellen. Beispiel für ein Zellen-Array:

C = {@sin, @cos, @tan};
C{2}(pi)
ans =

    -1

Alternativ ein Struktur-Array:

S.a = @sin;  S.b = @cos;  S.c = @tan;
S.a(pi/2)
ans =

     1

Speichern und Laden von Function Handles

Sie können Function Handles in MATLAB wie beliebige andere Variablen speichern und laden. Sie können also die Funktionen save und load verwenden. Wenn Sie ein Function Handle speichern, speichert MATLAB die absoluten Pfadinformationen. Sie können die Funktion von jedem Ort aus aufrufen, auf den MATLAB Zugriff hat, sofern die Datei der Funktion an diesem Speicherort existiert. Zu einem ungültigen Handle kommt es, wenn der Dateispeicherort oder Dateiname nach Erstellung des Handles geändert wird. Ist das Handle ungültig, zeigt MATLAB ggf. beim Laden der Datei eine Warnung an. Wenn Sie ein ungültiges Handle aufrufen, gibt MATLAB einen Fehler aus.

Siehe auch

| | | |

Themen