Please note that the recommended version of Scilab is 2025.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
M
est une hypermatrice.- U
Sans
orient
: vecteur d'éléments deM
triés par ordre croissant. SiM
est un vecteur ligne,U
aussi. Dans tous les autres cas,U
est un vecteur colonne.- Avec
orient
: Matrice de lignes ou de colonnes extraites deM
, triées par ordre lexicographique croissant.
U
est toujours creuse si en entréeM
l'est.- km
Indices des éléments, lignes ou colonnes extraits, tels que
U = M(km)
ouU = M(km,:)
ouU = M(:,km)
.km
est un vecteur ligne siM
l'est aussi ou siorient="c"
est utilisé. Sinonkm
est en colonne.- ku
- Vecteur, matrice ou hypermatrice d'indices dans U, tel que, selon
l'option
orient
- "*":
ku
est de taille size(M), avecU(ku) = M
- "r":
ku
est de taille [size(M,1), 1], avecU(ku,:) = M
- "c":
ku
est de taille [1, size(M,2)], avecU(:,ku) = M
ku
est dense, y compris lorsqueM
est creuse et que le mode simple "*" est utilisé. - "*":
- nb
Vecteur d'entiers > 0, au format de
km
: nombres d'exemplaires dansM
de 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 >> |