MATLAB中nargin和nargout的妙用
Matlab提供了两个获取函数参数数目的函数:nargout与nargin。在函数内部使用时,nargin 和 nargout分别表明有输入和输出参数数量。若在函数外部使用, nargin 和nargout对给定的函数,表明输入和输出参数数量。如果一个函数有可变数量的参数,参数数量为负值。
nargin用法
nargin:number of function input arguments,指的是一个函数的输入变量的个数。
用法:nargin或nargin(fx), 其中fx指的是一个函数名或着函数句柄。
当一个函数的参数中含有varargin变量时,这时候返回值为负。
function test(a,b)
switch nargin
case 1
c = a+a;
case 2
c = a+b;
otherwise
c = 0;
end
disp(c)
end
如果输入两个变量,返回两个变量的和。如果是一个变量,则为该变量的两倍。如果未输入变量,则返回0.
同样也可以使用nargin(‘函数名’),返回值为函数的接受参数个数。
但是如果函数接受参数中包含varargin参数时,返回值为负值。
例如:
nargin('test')
但是如果我们将原函数变为:
function test(a,b,varargin)
switch nargin
case 1
c = a+a;
case 2
c = a+b;
otherwise
c = 0;
end
disp(c)
end
此时
nargin('test')=-3
nargout的用法
比如我们有这样一个函数需求,要求用户不想返回参数时作图展示运算结果,但是如果用户要求输出具体结果时就不做图展示,返回运算结果就行。
unction c = test(a,b)
switch nargout
case 1
c = [sin(1:a),cos(1:b)];
otherwise
plot([sin(1:0.1:a),cos(1:0.1:b)])
end
end
当在命令行输入
test(10,20)
绘制图形:
当输入:
c = test(10,20)
会展示具体的数值信息。