get number of output arguments of a function handle
조회 수: 14 (최근 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!