如何分离矩阵的每一行并放入一个组?

时间:2014-08-09 17:54:12

标签: matlab matlab-figure

我有一个矩阵A,其大小为1500*4000row*column)。我的问题是如何分离矩阵的每一行并将它们放入一个组中,因为我想使用这个命令:

[group, groupNames] = grp2idx(A);

当我运行此命令时,MATLAB会给出以下错误:

  

分组变量必须是矢量或字符数组。

error in :[group, groupNames] = grp2idx(A);

3 个答案:

答案 0 :(得分:2)

grd2idx将矢量作为输入。阅读其文档here。如果要将每行分组为开,则可以使用mat2cell

grouped_cell = mat2cell(A,ones(1,size(A,1)),size(A,2)); 

然后,要访问ith行形成的组,您可以使用i_group = grouped_cell{i};

答案 1 :(得分:2)

正如Nishant所说,你需要将矩阵转换为矢量,

您可以将矩阵转换为矢量:

B = A(:).

然后使用B而不是A.

[group, groupNames] = grp2idx(B);

现在你不应该有错误。

答案 2 :(得分:0)

您想要放置矩阵的每一行并将它们放入一个组中吗?

您不能将每一行放入单元格数组中吗?尝试做:

group = arrayfun(@(x) A(x,:), 1:size(A,1), 'uni', false); 
groupNames = 1:size(A,1);

groupNames从1枚举到尽可能多的行,group是一个单元格数组,其中i th 元素将包含i th 矩阵的一行A