Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Fonctions Elémentaires > Ensembles > unique

unique

extrait (et trie) les éléments distincts d'un vecteur, matrice, hypermatrice

Séquence d'appel

[N, km, kn, nb] = unique(M)
[N, km, kn, nb] = unique(M, orient)
[N, km, kn, nb] = unique(.., "keepOrder")
[N, km, kn, nb] = unique(.., "uniqueNan")

Paramètres

M

vecteur, matrice, ou hypermatrice de nombres ou de textes.

orient

1 ou "r", 2 ou "c". Ne peut pas être utilisé si M est une hypermatrice.

N

  • Sans orient: vecteur d'éléments de M triés par ordre croissant. Si M est un vecteur ligne, N aussi. Dans tous les autres cas, N est une matrice ou en colonne.

  • Avec orient: Matrice de lignes ou de colonnes extraites de M, triées par ordre lexicographique croissant.

km

Indices des éléments, lignes ou colonnes extraits, tels que N(i) = M(km(i)) ou N(i,:) = M(km(i),:) ou N(:,i) = M(:,km(i)).

km est un vecteur ligne si M l'est aussi ou si orient="c" est utilisé. Sinon km est en colonne.

kn
Not yet implemented. Vector of indices of first encountered occurrences, such that M(i) = N(kn(i)) or M(i,:) = N(kn(i),:) or M(:,i) = N(:,kn(i)).

nb

Vecteur d'entiers > 0, au format de km : nombres d'exemplaires dans M de chaque entité (élément, ligne, colonne) retournée dans N.

Description

unique(M) renvoie un vecteur contenant les valeurs distinctes contenues dans les termes de M classées par ordre croissant.

unique(M,"r") ou unique(M,1)retourne les lignes uniques de M triées dans l'ordre lexicographique croissant.

unique(M,"c") or unique(M,2)retourne les colonnes uniques M triées dans l'ordre lexicographique croissant.

unique(M,.. "keepOrder") donne le vecteur des valeurs distinctes de M selon leur ordre initial d'apparition dans M (au lieu d'être par défaut triées par ordre croissant). L'indicateur "keepOrder" est insensible aux minuscules/majuscules.

unique(M,.. "uniqueNan") considère toute valeur Nan comme égale à toute autre Nan, et les dédoublonne comme pour n'importe quelle autre valeur numérique. Par défaut, toute valeur Nan est distincte de toute autre Nan, y compris elle-même : %nan<>%nan est vrai, à moins d'utiliser "uniqueNan". L'indicateur "uniqueNan" est insensible aux minuscules/majuscules.

Exemples

Dédoublonnement de nombres :

M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
          0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
          ])
[u, km] = unique(M)
[uc, kmc] = unique(M, "c")
--> M
 M =
  2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
  0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0

--> [u, km] = unique(M)
 u  =
  0
  1
  2

 km  =
   2.
   4.
   1.

--> [uc, kmc] = unique(M, "c")
 uc  =
  0  0  0  1  1  1  2  2
  0  1  2  0  1  2  0  2

 kmc  =
   14.   2.   11.   12.   5.   6.   1.   3.

Dédoublonnement de nombres complexes :

i = %i;
c = [1+i, 1-i, -i, i, -i, 1+i]
[u, k] = unique(c)
[uc, kc] = unique(c, "c")
--> c = [1+i, 1-i, -i, i, -i, 1+i]
 c  =
   1. + i     1. - i  -i    i   -i    1. + i

--> [u, k] = unique(c)
 u  =
  -i    i    1. - i   1. + i

 k  =
   3.   4.   2.   1.

Dédoublonnement de textes :

t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
     "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
    ]
u = unique(t)'
[u, kt, ku, nb] = unique(t(1,:))
[u, kt] = unique(t(1,:), "keepOrder")        // ordre initial conservé
[uc, ktc, kuc, nb] = unique(t, "c")
[uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // ordre initial des colonnes conservé
--> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
  >      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
  >     ]
 t  =
!BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
!AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !

--> u = unique(t)'
 u  =
!AA  AB  BA  BB  !

--> [u, kt, ku, nb] = unique(t(1,:))
 u  =
!AA  AB  BA  BB  !

 kt  =
   10.   3.   1.   2.

 nb  =
   2.   5.   7.   1.

--> [u, kt] = unique(t(1,:), "keepOrder")  // ordre initial conservé
 u  =
!BA  BB  AB  AA  !

 kt  =
   1.   2.   3.   10.

--> [uc, ktc, kuc, nb] = unique(t, "c")
 uc  =
!AA  AA  AB  AB  AB  BA  BA  BA  BB  !             colonnes triées
!AA  AB  AA  BA  BB  AA  AB  BB  AB  !

 ktc  =
   15.   10.   3.   8.   5.   1.   9.   6.   2.

 nb  =
   1.   1.   1.   1.   3.   2.   3.   2.   1.

--> [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // ordre initial des colonnes conservé
 uc  =
!BA  BB  AB  AB  BA  AB  BA  AA  AA  !
!AA  AB  AA  BB  BB  BA  AB  AB  AA  !

 ktc  =
   1.   2.   3.   5.   6.   8.   9.   10.   15.

 nb  =
   2.   1.   1.   3.   2.   1.   3.   1.   1.

Avec des valeurs Nan (et Inf). Option "uniqueNan" :

M = [2  2  %nan  1     2  0     1  %nan  0    %nan
     1  0  1     %nan  0  %inf  0  1     %inf 1
    ];
[v, km, kv, n] = unique(M); v',n'
[v, km, kv, n] = unique(M, "uniqueNan"); v',n'
unique(M, "c")
[v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
--> M
 M  =
   2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
   1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.

--> [v, km, kv, n] = unique(M); v',n'
 ans  =
   0.   1.   2.   Inf   Nan   Nan   Nan   Nan

 ans  =
   5.   6.   3.   2.   1.   1.   1.   1.

--> [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
 ans  =
   0.   1.   2.   Inf   Nan

 ans  =
   5.   6.   3.   2.   4.

--> unique(M, "c")
 ans  =
   0.    1.   1.    2.   2.   Nan   Nan   Nan
   Inf   0.   Nan   0.   1.   1.    1.    1.

--> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
 v  =
   0.    1.   1.    2.   2.   Nan
   Inf   0.   Nan   0.   1.   1.

 kmc  =
   6.   7.   4.   2.   1.   3.

 n  =
   2.   1.   1.   2.   1.   3.

Voir aussi

  • members — dénombre (et localise) dans un tableau chaque élément ou ligne ou colonne d'un autre tableau
  • gsort — sorting by quick sort algorithm
  • vectorfind — locates occurences of a (wildcarded) vector in a matrix or hypermatrix
  • grep — find matches of a string in a vector of strings
  • union — extrait les composantes distinctes issues de l'union de deux vecteurs
  • intersect — éléments, lignes, ou colonnes communs aux 2 tableaux d'entrée, sans doublon

Historique

VersionDescription
6.0.2 unique() peut maintenant être utilisée pour dédoublonner des nombres complexes.
6.1.0
  • Options "keepOrder" et "uniqueNan" ajoutées.
  • 4ème résultat nb ajouté.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 25 08:50:20 CET 2020