我想写一个这样的函数:
function foo(goo,...)
if( goo is a function of two variables )
% do something
else
% do something else
end
end
有什么方法可以获得内联函数(或匿名函数?)的变量数。为了更清楚:
f = inline('x + y')
g = inline('x')
我希望能够区分f是两个变量的函数,g是1个变量
答案 0 :(得分:2)
修改强>
在我回答之后,找到了一个更好的策略:只需使用nargin
;见@k-messaoudi's answer。
对于内联函数:
根据inline
的帮助:
INLINE(EXPR)从字符串EXPR中包含的MATLAB表达式构造内联函数对象。通过搜索EXPR自动确定输入参数 对于变量名(参见SYMVAR)。
因此:调用symvar
并查看它返回的元素数量:
>> f = inline('x + y');
>> g = inline('x');
>> numel(symvar(f))
ans =
2
>> numel(symvar(g))
ans =
1
对于匿名函数:
首先使用functions
获取有关匿名函数的信息:
>> f = @(x,y,z) x+y+z;
>> info = functions(f)
info =
function: '@(x,y,z)x+y+z'
type: 'anonymous'
file: ''
workspace: {[1x1 struct]}
现在,再次使用symvar
上的info.function
:
>> numel(symvar(info.function))
ans =
3
答案 1 :(得分:2)
定义您的变量:syms x1 x2 x3 .... xn;
定义你的功能:f = inline(x1 + x2 + sin(x3) + ... );
输入参数的数量:n_arg = nargin(f)
输出参数的数量:n_arg = nargout(f)