• 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  

  • 相关阅读:
    java1200_060_把数字格式化为货币字符串
    ccf_201712-02
    ccf_201712-01
    算法笔记-----单源最短路径之Bellman-Ford算法
    算法笔记-----贪心算法----加里比海盗船--最优装载问题
    算法笔记-----最优二叉搜索树
    SHTSC2017酱油记
    并不能来一发50AC
    【bzoj4514】: [Sdoi2016]数字配对 图论-费用流
    【bzoj1066】: [SCOI2007]蜥蜴 图论-最大流
  • 原文地址:https://www.cnblogs.com/xwh-blogs/p/12851978.html
Copyright © 2020-2023  润新知