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