Frage: Wie kann ich in Matlab prüfen, ob ein Funktions-Handle eine bestimmte Funktion oder ein bestimmter Funktionstyp ist?
Beispiel: Lassen Sie f1
eine Funktionskennung sein. Wie überprüfe ich, ob f1
die eingebaute Matlab-Funktion mean
ist? Wie überprüfe ich, ob f1
eine anonyme Funktion ist?
Meine aktuelle Lösung: Meine aktuelle Lösung für dieses Problem beinhaltet einen Aufruf der Funktion functions
. functions
akzeptiert ein Funktions-Handle als Eingabe und gibt eine Struktur zurück, die Informationen über das Eingabefunktions-Handle enthält, z. B. Funktionstyp, Pfad, Funktionsname usw. Es funktioniert, ist aber keine ideale Lösung, da offizielle Dokumentation :
"Achtung MATLAB® stellt die Funktion functions
nur für Abfrage- und Debugging-Zwecke zur Verfügung. Da sich das Verhalten in nachfolgenden Releases ändern kann, sollten Sie sich für Programmierzwecke nicht darauf verlassen."
Wie wäre es mit func2str?
Wenn dies eine integrierte Funktion ist, sollte nur eine Zeichenfolge zurückgegeben werden, die den Funktionsnamen enthält. Wenn es sich um eine anonyme Funktion handelt, sollte sie die anonyme Funktion (einschließlich @) zurückgeben.
%Vor%Sie können auch isequal verwenden, um zwei Funktions-Handles zu vergleichen (ETA: dies funktioniert nicht, um zwei anonyme Funktionen zu vergleichen, es sei denn, eines wurde als Kopie des anderen erstellt):
%Vor%Tags und Links matlab function-handle