Gesucht: Matlab-Beispiel für eine anonyme Funktion zurückgeben, die mehr als 1 Ausgang
Ich nutze anonyme Funktionen für einfache Daten-Wert transformiert. Der anonyme Funktionen definiert sind, mit der folgenden syntax
sqr = @(x) x.^2;
Ich würde gerne eine einfache anonyme Funktion zurückgibt, die mehr als einen Ausgang, der verwendet werden kann, wie folgt . . .
[b,a] = myAnonymousFunc(x);
Den Matlab-Dokumentation schlägt vor, dass dies möglich ist, aber es nicht geben Ihnen ein Beispiel für die erforderliche syntax zur Definition einer solchen Funktion.
http://www.mathworks.co.uk/help/techdoc/matlab_prog/f4-70115.html#f4-71162
Was ist die syntax zur Definition einer solchen Funktion [in einer einzigen Zeile, wie das code Beispiel oben in meinem post]?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht das tun, was Sie brauchen?
Mit diesem Beispiel, müssen Sie sicherstellen, dass Sie nur anrufen
f
mit genau zwei Ausgabe-Argumente, sonst wird es Fehler.BEARBEITEN
Zumindest mit den aktuellen Versionen von MATLAB kann man wieder nur einen Teil der Ausgabe-Argumente mithilfe der
~
syntax:>> opf = @(dt,tc)deal(dt/tc,[1 dt/tc-1]); >> [b,a] = opf(1/44100, 0.0050)
Wenn Sie lieber nicht überspringen Ausgänge mit tilde ~ Ausgabe noch ein cell-array, würden Sie brauchen nur eine Hilfs-anonyme Funktion:
dann erhalten Sie nur die erste Ausgabe-argument oder beide der ersten und zweiten:
Ergebnisse:
Können Sie mehrere Ausgänge von einem anonymen Funktion, wenn die Funktion aufgerufen wird, gibt mehr als eine einzige Ausgabe. Sehen Sie diese blog-post auf der MathWorks-website für Beispiele in Aktion.
Gibt es zwei Möglichkeiten, um mehrere Ausgänge von einem anonymen Funktion:
Call-eine Funktion, die zurückgibt, mehrere Ausgänge
Aus der blog-post verlinkt sind, verwenden Sie die
eig
Funktion wie soAlternativ können Sie konstruieren eine anonyme Funktion, die zurückgibt, mehrere Ausgänge mit der
Angebot
Funktion.Hier ist einer von mir:
Bearbeiten: Wie bereits von Sam Roberts, und in der blog-post ich einen link zu verwenden, müssen Sie die richtige Anzahl von output-Argumente, die bei der Verwendung von
deal
, andernfalls wird ein Fehler geworfen. Ein Weg, um dieses ist, um wieder eine Zelle der Ergebnisse. Zum Beispiel~
s für Funktionen, die Rückkehr mehr als 2 Werte. Dies ist (einer der Orte), wo ich viel lieber Python, Tupel-Auspacken können Sie schreibena, _ = func(...)
wo eine beliebige Anzahl von Argumenten gebunden werden können, um_
. AFAIK MATLAB bietet kein äquivalent.varargout
um einen ähnlichen Effekt wie die Python-Methode, aber Sie können nicht einfach tun, dass mit anonymen Funktionen.