Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
unique
extrait (et trie) les éléments distincts d'un vecteur, matrice, hypermatrice
Séquence d'appel
[U, km, ku, nb] = unique(M) [U, km, ku, nb] = unique(M, orient) [U, km, ku, nb] = unique(.., "keepOrder") [U, km, ku, nb] = unique(.., "uniqueNan")
Paramètres
- M
vecteur, matrice, ou hypermatrice de booléens, de nombres, ou de textes. Les matrices numériques ou booléennes creuses sont acceptées.
- orient
1 ou "r", 2 ou "c". Ne peut pas être utilisé si
Mest une hypermatrice.- U
Sans
orient: vecteur d'éléments deMtriés par ordre croissant. SiMest un vecteur ligne,Uaussi. Dans tous les autres cas,Uest un vecteur colonne.- Avec
orient: Matrice de lignes ou de colonnes extraites deM, triées par ordre lexicographique croissant.
Uest toujours creuse si en entréeMl'est.- km
Indices des éléments, lignes ou colonnes extraits, tels que
U = M(km)ouU = M(km,:)ouU = M(:,km).kmest un vecteur ligne siMl'est aussi ou siorient="c"est utilisé. Sinonkmest en colonne.- ku
- Vecteur, matrice ou hypermatrice d'indices dans U, tel que, selon
l'option
orient- "*":
kuest de taille size(M), avecU(ku) = M - "r":
kuest de taille [size(M,1), 1], avecU(ku,:) = M - "c":
kuest de taille [1, size(M,2)], avecU(:,ku) = M

kuest dense, y compris lorsqueMest creuse et que le mode simple "*" est utilisé. - "*":
- nb
Vecteur d'entiers > 0, au format de
km: nombres d'exemplaires dansMde chaque entité (élément, ligne, colonne) retournée dansU.
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.
Pour un tableau de booléens, unique(…) sera utile principalement
avec les options "r" ou "c".
![]() | Les nombres complexes sont triés par modules croissants, puis par phases croissantes
sur [-π, π]. |
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 0. - i 0. + i 0. - i 1. + i --> [u, k] = unique(c) u = 0. - i 0. + i 1. - i 1. + i k = 3. 4. 2. 1. --> [uc, kc] = unique(c, "c") uc = 0. - i 0. + i 1. - i 1. + i kc = 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é [and(t(:,ktc)==uc), and(uc(:,kuc)==t) ]
--> 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. --> [and(t(:,ktc)==uc), and(uc(:,kuc)==t) ] ans = T T
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 — sorts boolean, numerical and string arrays
- vectorfind — locates occurences of a (wildcarded) vector in a matrix or hypermatrix
- grep — find matches of a string in a vector of strings
- union — Ensemble de tous les éléments, lignes ou colonnes de deux matrices, sans doublons
- intersect — éléments, lignes, ou colonnes communs aux 2 tableaux d'entrée, sans doublon
Historique
| Version | Description |
| 6.0.2 | unique() peut maintenant être utilisée pour dédoublonner des nombres complexes. |
| 6.1.0 |
|
| 6.1.1 | 3ème résultat ku implémenté. Les matrices creuses 2D sont désormais acceptées. |
| Report an issue | ||
| << union | Ensembles | Trigonométrie >> |
