参考:官方帮助文档

varargin

  • 可变长度输入参数列表

    语法

  • varargin

    说明

  • varargin函数定义语句中的一个输入变量,允许函数接受任意数量的输入参数。

    • 使用小写字符指定 varargin,将其作为最后一个输入参数附加在任何显式声明的输入项后。
    • 在执行函数时,varargin 是一个 1×N 元胞数组,其中 N 是函数在显式声明的输入后收到的输入项数。
    • 但是,如果该函数在显式声明的输入后未收到任何输入,则 varargin 是空元胞数组。

      示例

      个数不定的函数输入项

  • 在名称为 acceptVariableNumInputs.m 的文件中定义一个函数,接受个数不定的输入项,并显示每个输入项的值。

    • type acceptVariableNumInputs
      1. function acceptVariableNumInputs(varargin)
      2. disp("Number of input arguments: " + nargin) % narginvarargin中的参数个数
      3. celldisp(varargin) % celldisp:展示cell元素
      4. end
  • 使用多个输入调用该函数 ```matlab

    acceptVariableNumInputs(ones(3),’some text’,pi)

Number of input arguments: 3 ans{1} = 1 1 1 1 1 1 1 1 1 ans{2} = some text ans{3} = 3.1416

  1. <a name="SiMSl"></a>
  2. ### `varargin` 和声明的输入
  3. - 在名为 `definedAndVariableNumInputs.m` 的文件中定义一个函数,它有两个必需的输入,并且接受一定数量的附加输入。
  4. - type definedAndVariableNumInputs<br />
  5. ```matlab
  6. function definedAndVariableNumInputs(X,Y,varargin)
  7. disp("Total number of input arguments: " + nargin)
  8. formatSpec = "Size of varargin cell array: %dx%d";
  9. str = compose(formatSpec,size(varargin));
  10. disp(str)
  11. end
  • 使用多个输入调用该函数。 ```matlab

    definedAndVariableNumInputs(7,pi,rand(4),datetime(‘now’),’hello’)

Total number of input arguments: 5 Size of varargin cell array: 1x3


- 使用两个输入调用该函数。`varargin` 是空元胞数组。
```matlab
>> definedAndVariableNumInputs(13,42)

Total number of input arguments: 2
Size of varargin cell array: 0x0

可变数目的输入和输出

  • 在名为 variableNumInputAndOutput.m 的文件中定义一个函数,它接受可变数目的输入和输出。

    • type variableNumInputAndOutput

      function varargout = variableNumInputAndOutput(varargin)
      disp(['Number of provided inputs: ' num2str(length(varargin))])
      disp(['Number of requested outputs: ' num2str(nargout)])
      
      for k = 1:nargout
         varargout{k} = k;
      end
      end
      
  • 使用两个输入和三个输出调用该函数。 ```matlab

    [d,g,p] = variableNumInputAndOutput(6,’Nexus’)

Number of provided inputs: 2 Number of requested outputs: 3 d = 1 g = 2 p = 3


- 不使用任何输入和输出再次调用该函数。
```matlab
>> variableNumInputAndOutput

Number of provided inputs: 0
Number of requested outputs: 0

创建函数封装程序

  • 在工作文件夹中的某个文件中,为绘制红线的 plot 函数创建封装程序。
  • redplot 函数接受可变长度的输入参数列表,并返回可变长度的输出参数列表。

    • 它将线条颜色设置为红色,并将其他输入值转发给 plot 函数。
    • 此函数封装程序允许您向 redplot 传递与plot 相同的输入,而不用将线条颜色指定为红色。
    • type redplot.m
      function varargout = redplot(varargin)
      [varargout{1:nargout}] = plot(varargin{:},'Color',[1,0,0]);
      end
      
  • 使用 redplot 创建一个线图。

    x = 0:pi/100:2*pi;
    y = sin(x);
    redplot(x,y)
    

    【MATLAB】varargin:可变长度输入参数列表 - 图1

  • 再次调用 redplot,并指定转发给 plot 函数的输入参数和输出参数。

    h = redplot(x,y,'Marker','o','MarkerEdgeColor','green');
    

    【MATLAB】varargin:可变长度输入参数列表 - 图2

    另请参阅

    nargin | narginchk | varargout