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

如何将矩阵的每一行插入Matlab中的单元格?,matlab,cell,Matlab,Cell,假设A=[123;456;789] 我想把它转换成B=[{[1,2,3]};{[4,5,6]};{[7,8,9]}] 我怎样才能简单地做到这一点呢?你不能有一个“细胞矩阵”,就像你对B的符号所暗示的那样。 单元格数组允许您在单个单元格中存储“任何数据类型”。不能将单元格作为数据类型存储在数组中 假设你想说你想要B={[1,2,3],[4,5,6],[7,8,9]} 如果是这样,那么 B = cell(1,3); for ii=1:3 B(ii) = {A(ii, :)}; end 我们应该

假设A=[123;456;789] 我想把它转换成B=[{[1,2,3]};{[4,5,6]};{[7,8,9]}] 我怎样才能简单地做到这一点呢?

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

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

如果是这样,那么

B = cell(1,3);
for ii=1:3
  B(ii) = {A(ii, :)};
end
我们应该做到这一点

注-根据哈迪的评论编辑。

您可以使用该函数

从文件中:

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));

谢谢,B=[{[1,2,3]};{[4,5,6]};{[7,8,9]}和B={[1,2,3],[4,5,6],[7,8,9]}都有相同的结果,但后者显示得更好。需要从双精度到单元的转换。A(ii,:)必须在括号内,如下所示:B(ii)={A(ii,:)};(+1)比我的更清洁的溶液。。。我知道
mat2cell
及其相反的
cell2mat
函数,但我发现我总是需要文档来正确使用它们。在上面这样一个简单的问题上,“快速和肮脏”胜过“干净、优雅和缓慢”(因为在文档中查找…@Floris是的,如果你的矩阵是3x3,快速和肮脏是好的,但是如果你想要更大的数据集,最好是矢量化的解决方案。完全同意@HebeleHododo-这就是为什么我对你的解决方案投了更高的票。但我回答了问题,因为它被问到。。。我很高兴看到您的答案现在已被接受为正确答案。请尝试
num2单元格([1 2 3;4 5 6;7 8 9],2)