Matlab 如何将一个矩阵同时分配给几个向量?

Matlab 如何将一个矩阵同时分配给几个向量?,matlab,variable-assignment,Matlab,Variable Assignment,我注意到,如果我们想给几个变量分配一个向量,我们可以使用'deal';但是当把一个矩阵分配给几个向量时,它就不起作用了。比如说 A=[1 2; 3 4]; A=num2cell(A); [a, b]=deal(A{:}) 它给出了一条错误消息“使用交易时出错(第38行),输出数量应与输入数量匹配。” 你知道如何改进代码吗?谢谢 您可以非常轻松地编写自己的交易: # in mydeal.m function varargout = mydeal(varargin) % Assign v

我注意到,如果我们想给几个变量分配一个向量,我们可以使用'deal';但是当把一个矩阵分配给几个向量时,它就不起作用了。比如说

A=[1 2; 3 4];
A=num2cell(A);
[a, b]=deal(A{:})
它给出了一条错误消息
“使用交易时出错(第38行),输出数量应与输入数量匹配。”


你知道如何改进代码吗?谢谢

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

# 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


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

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

尝试编辑您的答案,以提供有关您的环境、编程语言等的更多信息。正如所写,没有很多有用的信息可用于帮助您。
A=[1 2; 3 4];
A=num2cell(A,1);
[a, b]=deal(A{:})