如何在Matlab中将矩阵的每一行插入单元格?

时间:2013-02-01 13:11:23

标签: matlab cell

假设A = [1 2 3; 4 5 6; 7 8 9] 我想将其转换为B = [{[1,2,3]}; {[4,5,6]}; {[7,8,9]}] 我怎么能这么简单地做到这一点?

2 个答案:

答案 0 :(得分:7)

您可以使用mat2cell功能。

来自文档:

  

C = mat2cell(A,dim1Dist,...,dimNDist)将数组A分成更小的   单元格数组C中的数组。向量dim1Dist,... dimNDist指定如何   划分行,列和(如果适用)更高的维度   A。

mat2cell

你可以这样做:

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

会给你:

B={[1 2 3];[4 5 6];[7 8 9]}

文件还说:

  

C = mat2cell(A,rowDist)将数组A划分为n×1单元阵列C,   其中n == numel(rowDist)。

因此,如果您总是要将矩阵拆分为行而不是列,则可以在没有第二个参数的情况下将其拆分。

B = mat2cell(A, [1 1 1]);

更好,更通用的方式是:

mat2cell(A, ones(1, size(A, 1)), size(A, 2));

答案 1 :(得分:1)

你不能像B暗示的那样有一个“细胞矩阵”。 单元格数组允许您在单个单元格中存储“任何数据类型”。您不能将单元格存储为数组中的数据类型。

所以我们假设你想说你想要B = {[1,2,3], [4,5,6], [7,8,9]};

如果是这种情况,那么

B = cell(1,3);
for ii=1:3
  B(ii) = {A(ii, :)};
end

应该做的伎俩。

注 - 根据Hadi的评论进行编辑。