Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想从现有矩阵的列中创建新向量。我的代码如下所示:
Matrix=[1 2 3;4 5 6;7 8 9]; A=Matrix(:,1); B=Matrix(:,2); C=Matrix(:,3);
我发现这段代码不是很优雅,特别是如果我有很多列,这就是为什么我要寻找类似的东西:
[A B C]=Matrix;
但是Matlab说矩阵不能分配给多个值。还有其他方法吗?
使用mat2cell拆分原始矩阵并处理将拆分后的数据分配给结果变量 A、B 和 C:
m = mat2cell(Matrix,size(Matrix,1),ones(1,size(Matrix,2))) [A,B,C] = deal(m{:})
不幸的是,需要中间变量(但是,如果您喜欢单行,则可以使用 FEX 函数dealcell解决此问题)
你为什么想做这个?(只是好奇)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