Comment puis-je savoir si une matrice rectangulaire a des lignes en double dans MATLAB?
J'ai un n-par-m rectangulaire de la matrice (n != m). Quelle est la meilleure façon de savoir si il y a des lignes en double dans MATLAB? Quelle est la meilleure façon de trouver les indices des doublons?
OriginalL'auteur Nathan Fellman | 2010-03-24
Vous devez vous connecter pour publier un commentaire.
Usage unique() pour trouver les différentes valeurs de ligne. Si vous vous retrouvez avec moins de lignes, il y a des doublons. Il vous fournira également des indices d'un emplacement de chacune des valeurs distinctes. Toutes les autres lignes, les indices sont vos copies.
Personne ne sait l'algorithme Matlab utilise pour calculer cela?
OriginalL'auteur Andrew Janke
Vous pouvez utiliser les fonctions UNIQUE et SETDIFF pour ce faire:
repeatedIndex
être[3,4]
?Non, les quatrième et cinquième lignes de
mat
sont des répétitions de lignes plus tôt.OriginalL'auteur gnovice
Courir à travers les lignes de la matrice, et pour chaque paire, tester si
row1 == row2
OriginalL'auteur John
Dire votre matrice est M:
hors contiendra la ligne en double indices de si tout.
Mon erreur. Hypothèse erronée...
Eh bien, techniquement, l'OP ne jamais explicitement dit si oui ou non les lignes dupliquées sont juxtaposés l'un à l'autre. Bien que pas aussi générale que l'utilisation UNIQUE, cette solution fonctionne substantiellement le plus rapide dans le cas spécifique des voisins des doublons, donc +1.
Retiré ma fausse supposition...
Eh bien, votre nouvelle réponse est en train de faire quelque chose que je ne pense pas que l'OP voulait. Il est de retour les indices de tous les lignes qui ne sont pas uniques. Je pense que l'OP voulais juste indices de doublons pas de comptage le premier trouvé. En d'autres termes, si les lignes 2, 4, et 5 sont les mêmes, alors les lignes 4 et 5 sont considérés comme des "doublons", avec la ligne 2 de "l'original" (ou 2 et 4 pourraient être comptés comme des doublons, avec 5 que l'original... il n'y a pas d'ordre spécifié par l'OP).
OriginalL'auteur upperBound