2011-10-16 1 views
3

En utilisant cette méthode sur une matrice 8x8:indésirable, index et unique sur une matrice (comment garder le format de la matrice)

>> [junk,index] = unique(data,'first');  %# Capture the index, ignore junk 
>> data(sort(index))       %# Index data with the sorted index 

sorties format en format 64x1 (si aucune répétition se trouvent) ou NX1 si certains les répétitions sont trouvées.

Ma question est comment puis-je conserver le format de la matrice sans le tri?

j'en ai besoin pour vérifier (lignes) uniques pour les doublons et non les cellules uniques. Et pour supprimer les lignes en double mais gardez le format (ne pas organiser/trier).

+2

utilisation '~' au lieu de 'junk' de ne pas recueillir la sortie que vous n » t besoin. – abcd

Répondre

5

Si vous voulez des lignes uniques, tout en gardant l'ordre original, essayez ceci:

[M,ind] = unique(data, 'rows', 'first'); 
[~,ind] = sort(ind); 
M = M(ind,:); 

Exemple:

>> data = randi(2,[8 3]); 
data = 
    1  2  1 
    1  2  1 
    1  1  2 
    2  2  2 
    1  1  1 
    2  2  2 
    2  2  2 
    2  1  1 
>> M 
M = 
    1  2  1 
    1  1  2 
    2  2  2 
    1  1  1 
    2  1  1 
Questions connexes