如何才能使其输入输出的参数个数不限

    技术2022-05-11  118

    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数组中,才能输出


    最新回复(0)