Matlab提供了vargin和vargout这样的手段来是用户可以编写参数个数可变的函数,包括输入参数个数可变vargin和输出参数可变vargout.
输入参数个数可变的例子:function x=testvargin(varargin)x=[0 0];for k = 1:length(varargin) x(1) = x(1) + varargin{k}(1); % Cell array indexing x(2) = x(2) + varargin{k}(2);end; %%%%%%%%%%%% 文件 testvargin 结束 %%% 以下是函数 testvargin 的调用以及结果>> x0 = testvargin([1 2], [3 4], [5 6], [7 8])x0 = 16 20%%% 说明 示例函数 testvargin 将所有输入的两个元素的%%% 数组中对应的元素相加,返回得到的结果%%% Matlab 将所有输入的两个元素参数组合到CELL数组vargin中, 我们通过length(varargin)就可以知道传入的参数个数,通过varargin{k}就可以得到第k个传入的参数(每一个参数的类型可以任意,当类型不定是处理起来就有一定的困难,例中是同类型就可以按相同的方式处理所有的参数)
输出参数个数可变的例子:function [varargout] = testvarout(arrayin)num = min(nargout,legnth(array)); for k = 1:num varargout{k} = arrayin(k); % Cell array assignmentendif(num < nargout) varargout{k}=[];end %%%%%%%%%%%% 文件 testvargout 结束 %%% 以下是函数 testvargout 的调用以及结果>> [p1, p2, p3, p4, p5] = testvargout([1 2 3 4])P1 = 1P2 = 2P3 = 3P4 = 4P5 = []%%% 说明 示例函数 testvargout 将输入数组中的元素%%% 输出到对应的输出变量中,若输出变量多于输入,对应为空。所有输出必须打包到vargout这样的一个CELL数组中,才能输出