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 | Операции с множествами | Тригонометрия >> |