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
удалить все повторяющиеся компоненты из вектора или матрицы
Синтаксис
[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
так же является вектором-строкой. В случаях всех иныхM
U
является вектором-столбцом.- Если
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 | Операции с множествами | Тригонометрия >> |