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
удалить все повторяющиеся компоненты из вектора или матрицы
Синтаксис
[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")
Аргументы
- M
вектор, матрица или гиперматрица логических значений, чисел или текстов. Принимаются числовые или логические разрежённые матрицы.
- orient
флаг с возможными значениями: 1 или "r", 2 или "c". Не может использоваться, если
Mявляется гиперматрицей.- U
Если
orientне используется: вектор извлечённыхMкомпонентов, сортированных в полядке возрастания. ЕслиMявляется вектором-строкой, тоUтак же является вектором-строкой. В случаях всех иныхMUявляется вектором-столбцом.- Если
orientиспользуется: матрица извлечённыхMстрок или столбцов, сортированных в лексикографическом порядке возрастания.
Если
Mявляется разрежённой, тоUвсегда разрежённая.- km
Вектор индексов первых встреченных значений, таких что
U = M(km)илиU = M(km,:)илиU = M(:,km).kmявляется строкой, еслиMявляется строкой или если используетсяorient="c". В противном случае это столбец.- ku
- Массив индексов в
U, таких что в соответствии с опциейorient- "*":
kuимеет размерsize(M), иU(ku) = M - "r":
kuимеет размер[size(M,1), 1], иU(ku,:) = M - "c":
kuимеет размер[1, size(M,2)], иU(:,ku) = M

kuявляется плотной, даже когдаMявляется разрежённой и используется всеобщий режим "*". - "*":
- nb
Вектор целых чисел > 0 той же формы, что и
k: количество случаевMсоответствующих непродублированных элементов (компонентов, строк, столбцов) возвращаемых вU.
Описание
unique(M) возвращает вектор, который содержит уникальные элементы
M в порядке возрастания.
unique(M,"r") или unique(M,1) возвращает
уникальные строки M в лексикографическом порядке возрастания.
unique(M,"c") или unique(M,2) возвращает
уникальные столбцы M в лексикографическом порядке возрастания.
unique(M,.. "keepOrder") возвращает M недублированных
входов в их исходном порядке в M. "keepOrder" нечувствителен
к регистру.
unique(M,.. "uniqueNan") принимает все значения Nan одинаковыми и не дублирует их.
По умолчанию любой Nan отличается от другого Nan включая себя самого: %nan<>%nan
равен истине, пока не будет использоваться "uniqueNan". Определение
"uniqueNan" нечувствительно к регистру.
Для логических значений, unique(…) полезна главным образом с опциями
"r" or "c".
![]() | Комплексные числа сортируются сначала по амплитудам, а затем по фазам в [-π,π]. |
Примеры
С некотороми числами:
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.
С комплексными числами:
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.
С текстом:
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") // сохранение исходного порядка элементов строки №1 [uc, ktc, kuc, nb] = unique(t, "c") [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder") // сохранение исходного порядка столбцов [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") // сохранение исходного порядка 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 ! сортированные столбцы !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") // сохранение исходного порядка 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
Со значениями Nan (и Inf). Опция "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.
Смотрите также
- members — count (and locate) in an array each element or row or column of another array
- gsort — сортирует массивы логических, числовых и строковых значений
- vectorfind — ищет расположение вектора (отмеченный символом групповой подстановки) в матрице или гиперматрице
- grep — поиск соответствий строки в векторе строк
- union — Множество всех элементов, строк или столбцов двух массивов без дубликатов
- intersect — элементы, либо строки либо столбцы, имеющиеся в обоих входных массивах, без повторов
История
| Версия | Описание |
| 6.0.2 | unique() теперь может использоваться для удаления дубликатов комплексных чисел. |
| 6.1.0 |
|
| 6.1.1 | Реализован третий выходной аргумент ku.
Теперь принимаются двумерные разрежённые матрицы. |
| Report an issue | ||
| << union | Операции с множествами | Тригонометрия >> |
