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.