finding similar rows in matrices
    6 views (last 30 days)
  
       Show older comments
    
    Dany
 on 11 Feb 2014
  
    
    
    
    
    Commented: SIVAKUMAR KARURNKARAN
 on 24 Apr 2015
            Hi, i have several matrices that has 3 columns each, but the number of rows is not equal. im trying to find a fast way of comparing the first two columns in all 3 matrices and to find the rows (column 1 and 2) that are identical in all 3 of them. i've tried "ismember", it works ok but when dealing with lots of matrices its too slow.
can anyone recomend a different function? thank you for your help.
3 Comments
  SIVAKUMAR KARURNKARAN
 on 24 Apr 2015
				thankyou sir i have one doubt in my coding.how to remove a duplicate matrices in the set of all matrices.
Accepted Answer
  the cyclist
      
      
 on 11 Feb 2014
        
      Edited: the cyclist
      
      
 on 11 Feb 2014
  
      I think your best bet for something fast is the intersect() command.
doc intersect
for details. Be sure to use the "rows" argument.
Here is some code that I believe will do what you want, but I have to admit I did not test much:
a=[1,2,3;
1,3,5;
2,5,7];
b=[1,2,6;
1,4,8;
2,5,8];
c=[1,4,7;
1,5,3;
2,5,9];
[ab,ia,ib] = intersect(a(:,1:2),b(:,1:2),'rows')
[abc,iab,ic] = intersect(ab(:,1:2),c(:,1:2),'rows')
a_row_idx = ia(iab)
b_row_idx = ib(iab)
c_row_idx = ic
0 Comments
More Answers (2)
  Jos (10584)
      
      
 on 11 Feb 2014
        INTERSECT or ISMEMBER come into mind:
tf = ismember(C, A(ismember(A,B,'rows')), 'rows') 
result = C(tf,:)
0 Comments
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

