nargin与varargin的用法

 nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能。通常可以用它来设定一些默认值。如下例所示:

    函数文件 examp.m

    function fout=examp(a,b,c)

    if nargin==1

       fout=a;

    elseif nargin==2

       fout=a+b;

    elseif nargin==3

       fout=(a*b*c)/2;

    end

另外一例:

    function [x0, y0] = myplot(x, y, npts, angle, subdiv)
% MYPLOT  Plot a function.
% MYPLOT(x, y, npts, angle, subdiv)
%     The first two input arguments are
%     required; the other three have default values ...
if nargin < 5, subdiv = 20; end
if nargin < 4, angle = 10; end
if nargin < 3, npts = 25; end
 ...
if nargout == 0
     plot(x, y)
else
     x0 = x;
     y0 = y;
end

注:%x,y是两个变量,npt,angle,subdiv这三个参数具有默认值,不需要输入。
if nargin < 5, subdiv = 20; end如果输入变量的个数小于5个,那么给subdiv赋默认值。

if nargin < 4, angle = 10; end如果输入变量的个数小于4个,那么给angle赋默认值。

......
详细用法 在matlab窗口中输入 help nargin

 

nargin的用法:

 

nargin:number of function input arguments,指的是一个函数的输入变量的个数。

 

用法:nargin或着nargin(fx), 其中fx指的是一个函数名或着函数句柄。

 

当一个函数的参数中含有varargin变量时,这时候返回值为负。

 

下面举例说明:

 

用于nargin:

 

复制代码
function c = addme(a, b)
switch nargin
case 2
 c= a + b;
case 1
 c = a + a ;
otherwise
  c = 0;
end
复制代码

 

返回的结果为 a + b。

 

用到nargin(fx):

 

fx = 'addme';
nargin(fx)
ans = 
    2

 

当含有 varargin参数时,

 

function mynewplot(x, y, varargin)
 
fx = 'mynewplot';
nargin(fx)
ans = 
-3

 

varargin的用法:

 

varargin:Variable-length input arguments list. 即指的是变输入参数列表;

 

varargin 就是一个输入 变量,它可以是任意个不定个数的输入参数。要求:第一,指明它用小写的字母表示;第二,在函数的参数列表中,varargin放在最后面。    当函数执行时,varargin就是一个1*n的cell数组。下面我们举例说明:

 

第一个例子:

 

复制代码
function varlist( vargarin)
fprintf(' Number of arguments: %d\n',nargin);
celldisp(varargin)

varlist( ones(3), 'some text', pi)
Number of arguments:3
varargin{1} = 
    1    1    1
    1    1    1
    1    1    1
varargin{2} = 
some text
varargin{3} = 
3.1416
复制代码

 

第二个例子:

 

复制代码
function varlist2(x, y, varargin)
fprintf('Total number of inputs = %d\n', nargin);
nVarargs = length(varargin);
fprintf('Inputs in varargin( %d ) :\n', nVarargs);
for k = 1 : nVarargs
fprintf('    %d ', varargin{k} )
end



varlist2( 10, 20, 30, 40, 50)
Total number of inputs = 5
Inputs in varargin(3):
30
40
50

 

posted @ 2018-07-21 17:00  yongbin-H  阅读(1647)  评论(0编辑  收藏  举报