将矩阵拆分为多列
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]
假设我有两列矩阵 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]