0

我想从现有矩阵的列中创建新向量。我的代码如下所示:

Matrix=[1 2 3;4 5 6;7 8 9];
A=Matrix(:,1);
B=Matrix(:,2);
C=Matrix(:,3);

我发现这段代码不是很优雅,特别是如果我有很多列,这就是为什么我要寻找类似的东西:

[A B C]=Matrix;

但是Matlab说矩阵不能分配给多个值。还有其他方法吗?

4

2 回答 2

2

使用mat2cell拆分原始矩阵并处理将拆分后的数据分配给结果变量 A、B 和 C:

m = mat2cell(Matrix,size(Matrix,1),ones(1,size(Matrix,2)))
[A,B,C] = deal(m{:})

不幸的是,需要中间变量(但是,如果您喜欢单行,则可以使用 FEX 函数dealcell解决此问题)

于 2012-07-30T18:58:53.870 回答
-1

你为什么想做这个?(只是好奇)Matlab 旨在处理矩阵。因此命名为 Matrix 实验室......但遗憾的是它仍然是可能的。

我确信有一个更优雅的解决方案,但我会让你思考一下。这应该让你继续前进。

Matrix=[1 2 3;4 5 6;7 8 9];

for i=1:size(Matrix,2) %number of rows
  eval(sprintf('A%d = Matrix(:,i)', i));
end

A1 =

 1
 4
 7

A2 =

 2
 5
 8

A3 =

 3
 6
 9
于 2012-07-30T19:03:15.080 回答