Unique Function based on 2 columns [Instead of rows]
    5 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Suppose, I have a cell array, a, with contents as such:
a{1}=[1 3 4 5;
      3 3 4 5;
      5 5 4 5
      2 4 2 6;
      6 5 2 6
      7 2 3 1;]
How can I apply the 'unique' function on 2 columns [column 3 and 4] such that they will return the value '3' and '2'. [Since there are 3 duplicates for the pair 4,5 and 2 duplicates for the pair 2,6.]
Solution proposed:
diff(find([true; any(diff(a{1}(:,3:4)),2); true]))
-----------------------------------------------------------------------
However, when the arrangement of the contents is changed, for eg.
a{1}=[  1 3 4 5;
        3 3 2 6;
        5 5 4 5
        2 4 3 1;
        6 5 2 6
        7 2 3 1;]
The code doesn't seem to identify the similarity/duplicated for column 3 and 4 [Corresponding rows: 1 & 3; 2 & 5; 4 & 6]
1 comentario
  Cedric
      
      
 el 9 de Abr. de 2013
				No, this code assumes blocks of similar rows (for cols 3 and 4), as it seems to be the case in your first example.
Respuesta aceptada
  Azzi Abdelmalek
      
      
 el 9 de Abr. de 2013
        b=a{1}
c=b(:,3:4)
[~,idx]=unique(c,'rows','first','stable')
out=b(idx,:)
4 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


