文档

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

varargin

可变长度输入参数列表

语法

varargin

说明

示例

varargin 是函数定义语句中的一个输入变量,允许函数接受任意数量的输入参数。使用小写字符指定 varargin,将其作为最后一个输入参数附加在任何显式声明的输入项后。

在执行函数时,varargin 是一个 1×N 元胞数组,其中 N 是函数在显式声明的输入后收到的输入项数。但是,如果该函数在显式声明的输入后未收到任何输入,则 varargin 是空元胞数组。

示例

全部折叠

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

type acceptVariableNumInputs
function acceptVariableNumInputs(varargin)
    disp("Number of input arguments: " + nargin)
    celldisp(varargin)
end

使用多个输入调用该函数。

acceptVariableNumInputs(ones(3),'some text',pi)
Number of input arguments: 3
 
varargin{1} =
 
     1     1     1
     1     1     1
     1     1     1

 
 
varargin{2} =
 
some text
 
 
varargin{3} =
 
    3.1416

 

在名为 definedAndVariableNumInputs.m 的文件中定义一个函数,它有两个必需的输入,并且接受一定数量的附加输入。

type definedAndVariableNumInputs
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

使用多个输入调用该函数。

definedAndVariableNumInputs(7,pi,rand(4),datetime('now'),'hello')
Total number of input arguments: 5
Size of varargin cell array: 1x3

使用两个输入调用该函数。varargin 是空元胞数组。

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

使用两个输入和三个输出调用该函数。

[d g p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2
Number of requested outputs: 3
d = 1
g = 2
p = 3

不使用任何输入和输出再次调用该函数。

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'); 

在 R2006a 之前推出

此主题对您有帮助吗?