3

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

4

2 回答 2

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));
于 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 回答