代码之家  ›  专栏  ›  技术社区  ›  rlbond

matlab将矢量元素分配给单个变量的最简单方法[复制]

  •  16
  • rlbond  · 技术社区  · 14 年前

    可能重复:
    How do I do multiple assignment in MATLAB?

    假设我有一个向量 p = [1 2 3] . 我想要一个如下的命令:

    [x y z] = p;
    

    所以x=p(1),y=p(2),z=p(3)。

    有简单的方法吗?

    3 回复  |  直到 14 年前
        1
  •  21
  •   Jonas    14 年前

    转换为单元格数组。

    pCell = num2cell(p);
    [x,y,z] = pCell{:};
    
        2
  •  2
  •   Nicholas Palko    14 年前

    你可以使用 deal :

    [x y z] = deal( p(1), p(2), p(3) )

        3
  •  1
  •   rlbond    14 年前

    好吧,结果发现这一行是不可能的,所以我写了一个函数。

    function varargout = deal_array(arr)
        s = numel(arr);
        n = nargout;
    
        if n > s
            error('Insufficient number of elements in array!');
        elseif n == 0
            return;
        end
    
        for i = 1:n
            varargout(i) = {arr(i)}; %#ok<AGROW>
        end
    end