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 assignment
end
if(num < nargout)
varargout{k}=[];
end
%%%%%%%%%%%% 文件 testvargout 结束
%%% 以下是函数 testvargout 的调用以及结果
>> [p1, p2, p3, p4, p5] = testvargout([1 2 3 4])
P1 =
1
P2 =
2
P3 =
3
P4 =
4
P5 =
[]
%%% 说明 示例函数 testvargout 将输入数组中的元素
%%% 输出到对应的输出变量中,若输出变量多于输入,对应为空。所有输出必须打包到vargout这样的一个CELL数组中,才能输出