将矩阵拆分为多列

Splitting a matrix into multiple columns

假设我有两列矩阵 M=[0,1;2,3;4,5],我想将它们同时拆分为两个向量。我想做的是 [A,B] = M 所以 A=[0;2;4]B=[1;3;5] 但这不起作用。 有什么方法可以在一行代码中做到这一点吗?我的实际矩阵大约有 20 列,因此将它们存储在一行中会很棒!

最简单的方法是结合使用 num2cell and deal

M = rand(4,2);

    0.8173    0.2599
    0.8687    0.8001
    0.0844    0.4314
    0.3998    0.9106


inputData = num2cell(M, 1);
[A, B] = deal(inputData{:});


A =

    0.8173
    0.8687
    0.0844
    0.3998

B =

    0.2599
    0.8001
    0.4314
    0.9106

或者,作为 你可以省略 deal:

[A, B] = inputData{:};

话虽这么说,当您遇到更多元素时,只需将它们留在元胞数组中,而不是尝试兼顾 20 个变量。

columns = num2cell(M, 1);

    [4x1 double]    [4x1 double]