get number of output arguments of a function handle
15 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alwin Förster
el 4 de En. de 2022
Respondida: Steven Lord
el 4 de En. de 2022
Is there a better way to get the number of output arguments (should be one or two) of a function handle than this:
a = 1;
b = 2;
x0 = 0;
fun = @(x) function_file(x,a,b);
try
[f1,f2] = fun(x0);
nout = 2;
catch
nout = 1;
end
It should also work if the function is:
fun = @(x) a*x.^b;
Therefore catching the name 'function_file' using functions(fun) and then use nargout('function_file') is not an option.
Thanks in advance!
Alwin
0 comentarios
Respuesta aceptada
Steven Lord
el 4 de En. de 2022
Calling nargout on the function handle itself may give an answer.
nargout(@sin) % The sin function returns 1 output
But it may not be possible to tell from the function handle with how many outputs it can be called.
nargout(@size) % Can be called with an arbitrary number of output arguments
I believe calling nargout on an anonymous functions always returns -1 because MATLAB can't tell with how many output arguments the code that makes up the body of the anonymous function can be called until you actually call it.
f = @(x) svd(x);
nargout(f)
A = magic(4);
% Call f with 1 output
s = f(A)
% Call f with three outputs
[u, s, v] = f(A)
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Programming Utilities en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!