假设A = [1 2 3; 4 5 6; 7 8 9] 我想将其转换为B = [{[1,2,3]}; {[4,5,6]}; {[7,8,9]}] 我怎么能这么简单地做到这一点?
答案 0 :(得分:7)
您可以使用mat2cell
功能。
来自文档:
C = mat2cell(A,dim1Dist,...,dimNDist)将数组A分成更小的 单元格数组C中的数组。向量dim1Dist,... dimNDist指定如何 划分行,列和(如果适用)更高的维度 A。
你可以这样做:
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的评论进行编辑。