Comment puis-je supprimer les doublons dans un tableau, mais garder le même ordre?
J'ai cette cellule de tableau dans MATLAB:
y = { 'd' 'f' 'a' 'g' 'g' 'a' 'w' 'h'}
- Je utiliser unique(y)
pour se débarrasser des doublons, mais il réorganise les chaînes dans l'ordre alphabétique:
>> unique(y)
ans =
'a' 'd' 'f' 'g' 'h' 'w'
Je veux supprimer les doublons, mais garder le même ordre. Je sais que je pourrais écrire une fonction pour faire cela, mais je me demandais si il y avait un moyen plus simple en utilisant unique
de supprimer les doublons tout en gardant le même ordre avec les doublons supprimés.
Je veux qu'il revienne ce:
>> unique(y)
ans =
'd' 'f' 'a' 'g' 'w' 'h'
- Je suppose que la réponse donnée par Amro est la meilleure façon de le réaliser maintenant.
unique(y, 'stable')
InformationsquelleAutor Ben Fossen | 2010-06-17
Vous devez vous connecter pour publier un commentaire.
Voici une solution qui utilise supplémentaire d'entrée et de sortie des arguments qui UNIQUE a:
uniq.m
qui ne présente exactement, je l'utilise tout le temps 🙂Dans MATLAB R2012a, une nouvelle ordre du drapeau a été ajouté:
Si vous regardez la documentation de
unique
, il y a la possibilité de retourner un index avec le tableau trié. Vous pouvez spécifier si vous souhaitez que la première ou la dernière occurrence d'un nombre à renvoyer à l'index.Par exemple:
retourne
b=[1, 2, 3, 4, 5]
etm=[5, 4, 2, 3, 1]
Vous pouvez trier votre commande de tableau et de stocker l'index suivant
et enfin re-indice b