MATLAB中的nargin与varargin

nargin

1.定义

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

2.用法

  使用形式为nargin或nargin(fx), 其中fx指的是一个函数名或者函数句柄。注意当一个函数的参数中含有varargin变量时,并且varargin没有任何具体的参数指代时,这时候nargin返回值为负。

3.实例

例子1:

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

在上述例子中,nargin边用于判断addme函数的输入变量个数,这样便能根据不同输入的变量个数执行不同的操作。而此处的nargin的实际指代的值就是2,返回结果为a+b。

例子2:

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

上述例子用到nargin(fx)形式,表示nargin(fx)指代的值是fx的输入变量的个数,而fx指代addme函数(在例子1中addme输入变量数为2),因此此处ans的值为2

例子3:

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

 上述例子用到varargin作为函数参数,当varargin没有具体的参数指代时,nargin(fx)的结果返回负数,此时的函数中有3个参数(varargin无指代时当做一个参数),故此处的ans值为-3。

varargin

1.定义

  varargin指代的是一个函数的变输入参数列表。所谓的变输入参数列表:即varargin可以等价于任意不定个数的输入参数。例如,F是一个函数,F(a)可以用F(varargin)表示,F(a,b)依然可以用F(varargin)表示,F(a,b……)均能用F(varargin)来指代。

2.用法

  ①在指明它时用小写的字母varargin表示;

  ②在函数的参数列表中,不论含有一个或多个参数,varargin放在最后面;

  ③当函数执行时,varargin就是一个1*n的cell(元胞)数组(cell数组理解点这里)。

3.实例

例子1:

%函数的定义 
function varlist2(x, y, varargin) fprintf('Total number of inputs = %d ', nargin); %输出函数参数的总数 nVarargs = length(varargin); %获取varargin参数列表的长度 fprintf('Inputs in varargin( %d ) : ', nVarargs); for k = 1 : nVarargs fprintf('%d', varargin{k} ) %打印输出varargin中的元素值 end



%函数的使用, varlist2(
10, 20, 30, 40, 50) %此处有5个参数 Total number of inputs = 5 Inputs in varargin(3):%由于函数varlist2中有两个已经给出的参数x y,故varargin只指代后面的3个参数 30 40 50 30 40 50

例子2:

%函数定义
function varlist(vargarin) fprintf(
' Number of arguments: %d ',nargin);  %输出函数参数的总数 celldisp(varargin)  %输出元胞数组varargin中的所有元素 %函数调用 varlist( ones(3), 'some text', pi) Number of arguments:3  %函数调用时有3个参数,故nargin为3 varargin{1} =     %以下是varargin{i}的输出打印 1 1 1 1 1 1 1 1 1 varargin{2} = some text varargin{3} = 3.1416

参考:https://www.cnblogs.com/yinheyi/p/5571992.html  

原文地址:https://www.cnblogs.com/xwh-blogs/p/12851978.html