Ich finde es unmöglich, MATLAB-Code zu schreiben, ohne eine große Anzahl überflüssiger Variablen für den einmaligen Gebrauch zu erzeugen.Wie erzwingt MATLAB, alle Werte in einem geschachtelten Funktionsaufruf zurückzugeben?
Angenommen, die Funktion foo
gibt drei Spaltenvektoren mit exakt derselben Größe zurück. Sprich:
function [a, b, c] = foo(n)
a = rand(n, 1);
b = rand(n, 1);
c = rand(n, 1);
end
Nun sei angenommen, dass bar
eine Funktion, die (1, 3)
als imput eine Zelle Array der Größe erwarten.
function result = bar(triplet)
[x, y, z] = triplet{:};
result = x + y + z;
end
Wenn ich die Ergebnisse foo(5)
übergeben will, kann ich es tun, indem sie drei sonst nutzlose Variablen zu erstellen:
[x, y, z] = foo(5);
result = bar({x, y, z});
Gibt es eine Funktion baz
, die mir erlauben würde, die beiden Linien zu ersetzen oben mit
result = bar(baz(foo(5)));
?
Hinweis: Die obigen Funktionen foo
und bar
sind nur als Beispiele gedacht. Sie sollen Funktionen darstellen, über die ich keine Kontrolle habe. IOW, sie zu ändern, ist keine Option.
Sind schreiben können diese Funktionen über die Sie keine Kontrolle MATLAB haben oder die Ihre Kollegen ? – excaza
Sind Sie sicher, dass die Funktionen eine konstante Anzahl von Ausgängen zurückgeben, oder kann es auch "Varargout" sein? –
@ Dev-iL: Was würdest du tun, wenn 'foo'' varargout' wäre? – kjo