Wie erzwinge ich, dass MATLAB alle Werte in einem verschachtelten Funktionsaufruf zurückgibt?

Ich finde es unmöglich, MATLAB-Code zu schreiben, ohne eine große Anzahl überflüssiger Einwegvariablen zu erstellen.

ehmen wir zum Beispiel die Funktion @ afoo gibt drei Spaltenvektoren mit genau derselben Größe zurück. Sagen

function [a, b, c] = foo(n)
    a = rand(n, 1);
    b = rand(n, 1);
    c = rand(n, 1);
end

Nun, nimm an, dassbar ist eine Funktion, die als Eingabe ein Zellenarray der Größe @ erwarte(1, 3).

function result = bar(triplet)
    [x, y, z] = triplet{:};
    result = x + y + z;
end

Wenn ich die Ergebnisse von @ weitergeben möchfoo(5), Ich kann es tun, indem ich drei ansonsten nutzlose Variablen erstelle:

[x, y, z] = foo(5);
result = bar({x, y, z});

Gibt es eine Funktionbaz das würde mir erlauben, die beiden obigen Zeilen durch @ zu ersetz

result = bar(baz(foo(5)));

?

NB: die Funktionenfoo undbar oben sind nur als Beispiele gedacht. Sie sollen Funktionen darstellen, über die ich keine Kontrolle habe. IOW, Änderungen sind keine Option.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage