get number of output arguments of a function handle
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alwin Förster
am 4 Jan. 2022
Beantwortet: Steven Lord
am 4 Jan. 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 Kommentare
Akzeptierte Antwort
Steven Lord
am 4 Jan. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Programming Utilities 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!