参考:官方帮助文档
varargin
-
语法
-
说明
varargin
是函数定义语句中的一个输入变量,允许函数接受任意数量的输入参数。在名称为
acceptVariableNumInputs.m
的文件中定义一个函数,接受个数不定的输入项,并显示每个输入项的值。- type acceptVariableNumInputs
function acceptVariableNumInputs(varargin)
disp("Number of input arguments: " + nargin) % nargin:varargin中的参数个数
celldisp(varargin) % celldisp:展示cell元素
end
- type acceptVariableNumInputs
使用多个输入调用该函数 ```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
<a name="SiMSl"></a>
### `varargin` 和声明的输入
- 在名为 `definedAndVariableNumInputs.m` 的文件中定义一个函数,它有两个必需的输入,并且接受一定数量的附加输入。
- type definedAndVariableNumInputs<br />
```matlab
function definedAndVariableNumInputs(X,Y,varargin)
disp("Total number of input arguments: " + nargin)
formatSpec = "Size of varargin cell array: %dx%d";
str = compose(formatSpec,size(varargin));
disp(str)
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)
再次调用
redplot
,并指定转发给plot
函数的输入参数和输出参数。h = redplot(x,y,'Marker','o','MarkerEdgeColor','green');
另请参阅