如何一次为几个向量分配矩阵?

时间:2014-11-06 23:00:10

标签: matlab variable-assignment

我注意到,如果我们想要将矢量分配给我们可以使用的几个变量' deal&#39 ;;但是当为几个向量分配矩阵时,它并没有成功。例如

A=[1 2; 3 4];
A=num2cell(A);
[a, b]=deal(A{:})

它会显示错误消息"Error using deal (line 38) The number of outputs should match the number of inputs."

您知道如何改进代码吗?谢谢!!

2 个答案:

答案 0 :(得分:0)

您可以非常轻松地编写自己的交易:

# in mydeal.m
function  varargout = mydeal(varargin)
    % Assign values in vector into variables.
    %
    % EXAMPLE 1
    % [a,b,c] = mydeal([1,2,3]);
    % EXAMPLE 2
    % some_vector = [1,2,3];
    % [a,b,c] = mydeal(some_vector);
    %
    % %results in a=1, b=2, c=3;
    %


    assert(nargout == size(varargin{1}, 2), 'Different number of in and out arguments');

    for i = 1:nargout
         varargout{i} = varargin{1}(:, i);
    end

例如:

>> [a,b] = mydeal([1 2; 3 4])

a =

     1
     3


b =

     2
     4

或者

>> [a,b, c] = mydeal([1 2 3])

a =

     1


b =

     2


c =

     3

答案 1 :(得分:0)

你几乎得到了解决方案,但你的代码将A分成带有标量元素的2x2单元格。使用num2dell的第二个输入参数分割为列向量:

A=[1 2; 3 4];
A=num2cell(A,1);
[a, b]=deal(A{:})