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 >> |