get number of output arguments of a function handle
13 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Steven Lord
2022-1-4
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Programming Utilities 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!