我有一个矩阵A
,其大小为1500*4000
(row*column
)。我的问题是如何分离矩阵的每一行并将它们放入一个组中,因为我想使用这个命令:
[group, groupNames] = grp2idx(A);
当我运行此命令时,MATLAB会给出以下错误:
分组变量必须是矢量或字符数组。
error in :[group, groupNames] = grp2idx(A);
答案 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
。