Passing multiple outputs inside a function
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have been trying to program a function that will evaluate another function:
function [result]=evaluate(second_function,x,y,z)
.
.
.
the problem arises when the second_function has multiple outputs:
function [a,b,c]=second_function(x,yz)
I am clueless as to how to pass each output to the calling function ("evaluate"), so that it can use them for further purposes. I am aware of the nargout function but then I am lost as to how to dynamically assign each output to, say, a vector containing each output in a different row:
function [result]=evaluate(second_function,x,y,z)
v(:)=second_function(x,y,z);
Of course, I could program second_function in a way that the multiple outputs would be compressed in a vector:
function [a]=second_function(x,y,z)
a(1)=...;
a(2)=...;
a(3)=...;
But that adds further complications to the rest of my code.
I have to clarify that second_function is different each time (user defined) and I want the program to dynamically evaluate it.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 8 Sep. 2011
You cannot do this unless you are willing to restrict the user functions to not using varargout .
If you are willing to restrict to not using varargout, then you can use
clear out
[out{1:nargout(second_function)}] = second_function(x,y,z);
and then pass out{:} down the line.
However, if the user is allowed to use varargout, then they could easily write a function that returns as many outputs as there were output slots provided. Such a function already exists, by the way: deal() will return as many outputs as you give output locations.
Weitere Antworten (1)
Paulo Silva
am 8 Sep. 2011
doc varargin
2 Kommentare
Oleg Komarov
am 8 Sep. 2011
You can use varargout and store several outputs in a cell array and pass it to the second functions as out{:}, i.e. "unpacking" the content of the cell array.
Siehe auch
Kategorien
Mehr zu Variables finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!