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

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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页