将nxm矩阵转换为1xm单元阵列

时间:2015-09-03 23:05:39

标签: arrays matlab matrix cell-array

如何将2xn矩阵转换为1xn单元阵列,将值连接起来,以便单元格数组包含原始矩阵的列向量? 我想比通过每列的简单for循环更有效地做到这一点(因为这是matlab和循环效率低下)

说我有一个2x2矩阵[1,2; 3,4]。我希望将其转换为单元格数组{[1,3],[2,4]}。我已经查了一下mat2cell但看不到如何在向上连接的同时保持单元阵列的长度。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以利用mat2cell的其他参数来根据需要格式化输出。

在您的情况下,指定每个单元格连续包含2个元素:

A = [1 2;3 4];
B = mat2cell(A.',[1 1]).';

celldisp(B)

B现在是1x2单元格:

B{1} =

     1     3



B{2} =

     2     4

答案 1 :(得分:0)

有点密集,但我认为这就是你所追求的。

A=[1 2;3 4];
permute(mat2cell(reshape(permute(A,[2 1]),[numel(A) 1]),size(A,1)*ones(size(A,2),1),[1] ),[2 1])