2016-08-22 4 views

Antwort

5

Aufgrund der spezifischen Constraints , hätte es so etwas sein:

f = @(x) [x(1)^2, x(2)/2]; 

Sie können nicht explizit Ausgänge in einer anonymen Funktion auf andere Weise definieren.

+0

Danke, das ist genau das, was ich will (wie kommt Ich dachte nicht an das: D) – arynaq

3

für anonyme Funktionen in der Matlab-Hilfe Blick auf Abschnitt suchen functions with multiple inputs or outputs, würde ich denken, dass Sie so etwas wie der Code unter

Zweite bearbeiten zu tun wäre in der Lage stellte sich heraus, wenn Sie verwenden Deal (wie von thewaywewalk angegeben) oder wenn Sie die anonyme Funktion dereferenzieren, können Sie das gleiche erhalten.

[email protected](a,b) {(a^2),(b/2)}; 
[x y]=crazyfunction(a,b); 

Schnell und schmutzig Test zeigt, dass diese Fehler keine Syntax geben

>> f = @(x,y) {x^2, y/2}; 
>> f(2,2) 

ans = 

    [4] [1] 

EDIT Feuert Matlab meine ursprüngliche Antwort sehen würde, tatsächlich funktionieren sieht nicht wie es (siehe zweite bearbeiten müssen Sie {}) verwenden.

Sie würde entweder Verkettungs zwei anonyme Funktionen zusammen in der Weise, daß a und b Teil anonymer Funktion c sind oder eine Struktur der anonymen Funktionen effektiv wie unten gezeigt

crazyfunction={@(a) (a^2); @(b) (b/2);} 
[crazyfunction{1](7) crazyfunction{2}(9)] 
ans = 
    49.0000  4.5 
3

Obwohl Sie bereits akzeptiert PQL's answer Ihre Frage lautet eigentlich, wie Sie sich für diese Lösung mit deal suchen:

f = @(x,y) deal(x^2, y/2); 

[u,v] = f(2,2) 

Rückkehr:

u = 
    4 
v = 
    1 
+0

danke für die Inspiration. Ich wusste, dass ich etwas in Bezug auf Zellenarrays suchte – zhqiat

Verwandte Themen