nargin
nargin为“number of input arguments”的缩写。 在matlab中定义一个函数时, 在函数体内部, nargin是用来判断输入变量个数的函数。
nargin(fx)在函数fx的定义声明中返回输入参数的个数。如果函数包括varargin其定义,那么nargin返回的输入个数为负。例如函数foo输入有 a,b,和varargin三个参数,那么nargin('foo”)返回值为-3
从而可以进行不定输入量的计算
function re = add_multi(a,b,c,d)
%
%
if nargin ==4
re = a + b + c + d;
elseif nargin ==3
re = a + b + c ;
nargout
nargout
nargout的作用是在matlab中定义一个函数时, 在函数体内部, nargout指出了输出参数的个数(nargin指出了输入参数的个数)。 特别是在利用了可变参数列表的函数中, 用nargout获取输出参数个数很方便。
还有就是上文已出现的两个参数
varargin
varargin是matlab的一个函数,是“Variable length input argument list”的缩写,它提供了一种函数可变参数列表机制,允许调用者调用该函数时根据需要来改变输入参数的个数。
function re = add_var(a,b,varargin)
%
%
% author:jzq
if nargin ==2
re = a + b;
elseif nargin ==3
c = varargin[1];
re = a + b + c;
else
error( 'wrong');
end
只要把函数的参数列表的最后一个参数写成varargin,就可以在函数内部以访问cell数组的方式来获取可变参数的信息
varargout
varargout可以看做“Variable length output argument list”的缩写。在matlab中定义m函数时通过varargout我们可以得到可变个数个返回值
function varargout=add_my(b,c,d)
% add_my 输入参数的相加
% 输入 加数b、c、d
% 输出 varargout为输入参数的运算结果
% 2012年6月22日编
if nargout==1
a1 = b + c + d;
varargout={a1};
elseif nargout==2
a1 = b + c + d;
a2 = b + c;
varargout={a1,a2};
elseif nargout==3
a1 = b + c + d;
a2 = b + c;
a3 = b + d;
varargout={a1,a2,a3};
else
error('wrong')
end
>> a=add_my(1,2,3)
a =
6
>> [a,b]=add_my(1,2,3)
a =
6
b =
3
>> [a,b,c]=add_my(1,2,3)
a =
6
b =
3
c =
4
>> add_my(1,2,3)
??? Error using ==> add_my at 22
wrong