如何逐行比较matlab

时间:2014-03-21 21:01:55

标签: matlab matrix compare equality

我有这样的情况

我有数据 M尺寸(x乘2)

中的数据已经在分类组中
C = unique(M(:) , 'rows'); %result will be in g-by-2

现在我想将数据组M赋予C

通过创建一个M-by-1的R矩阵。

实施例

M = [ 1 2;
      3 3;
      1 2;
      1 5;
      . . ];

assume I got 3 groups 
C = [ 1 2;
      3 3;
      1 5];

I want R to be like
R = [ 1;
      2;
      1;
      3;
      . ];

我尝试使用循环并找到比较所有组

for i = 1:size(C(1)
    find(M(:) == C(i,:));
end

但它没有工作

2 个答案:

答案 0 :(得分:2)

无需查找组号。你应该这样做:

 M = [ 1 2;
      3 3;
      1 2;
      1 5;
      ];

[CC,ia,ic] = unique(M,'rows')

CC =

     1     2
     1     5
     3     3


ia =

     3
     4
     2


ic =

     1
     3
     1
     2
您正在寻找

ic

答案 1 :(得分:1)

问题是,您正在使用输入参数M(:),这不再是矩阵。请改用[A,B,C]=unique(M , 'rows')

除此之外,预期输出的顺序需要选项'stable'