假设 A = [1 2 3;4 5 6;7 8 9] 我想将其转换为 B = [{[1,2,3]};{[4,5,6]};{[7,8 ,9]}] 我怎样才能以简单的方式做到这一点?
问问题
5952 次
2 回答
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));
于 2013-02-01T13:22:30.383 回答
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
应该做的伎俩。
注意 - 根据哈迪的评论编辑。
于 2013-02-01T13:16:18.877 回答