access outputs of functions with multiple outputs
Mostrar comentarios más antiguos
Dear All,
I would like to find a functional way to access outputs of functions with multiple outputs. Assume I have a function "twout" defined in a m-file as follows
function [foo, bar] = twout(x, y)
foo = x+y;
bar = x-y;
end
I would like now to access the SECOND output "bar" from a function handle, i.e. I am looking for a function (or something which can be put into an anonymous function) called "somemagic" say, such that an anonymous function can be defined as
anoneout = @(x,y)( somemagic( twout(x, y) )
and the call
@anoneout(1,2)
produces -1.
It is clear that I can always
- write anoneout into a separate .m-file where I make a proper call to twout
- switch "foo" and "bar" in the function definition.
- return a structured data type instead of 2 outputs
My question is really whether these workaroounds are indeed the only solutions.
Thanks
gg
Respuesta aceptada
Más respuestas (1)
Jan
el 6 de Sept. de 2012
I'm not sure if I understand the question. Do you want something like this:
function Out2 = SomeMagic(Fcn, varargin)
[Out1, Out2] = feval(Fcn(vargargin{:}));
% Note: FEVAL can be omitted in modern Matlab versions
This would be called by:
z = SomeMagic(@twout, x, y);
But I do not think that this is useful, such that I assume, you are looking for something else.
3 comentarios
gg
el 6 de Sept. de 2012
I think this is not useful, because it does not add any new functionality to Matlab. The first output is still calcutate, but the command to ignore it is hidden in a function. The following would be nicer, leaner, faster and easier to debug:
[dummy, z] = twout(x, y);
Or when you do not need to write code compatible to old versions, replace "dummy" by "~".
gg
el 6 de Sept. de 2012
Categorías
Más información sobre Programming Utilities en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!