setdiff
возвращает элементы или строк или столбцов массива, которые не принадлежат другому массиву
Синтаксис
v = setdiff(a, b) v = setdiff(a, b, orien) [v, ka] = setdiff(..)
Аргументы
- a, b
векторы, матрицы или гиперматрицы действительных или комплексных чисел, закодированные целые числа, логические значения или строки. Допускаются закодированные разрежённые входные данные. Как
a
так иb
должны иметь одинаковые типы данных (или типы целых чисел), но можно смешивать плотные и разрежённые.Если используется опция
orien="r"
, тоa
иb
должны иметь одинаковое количество столбцов. Если используетсяorien="c"
, то они должны иметь одинаковое количество строк.- orien
- направленная обработка:
"r"
: строки изa
ищутся среди строк вb
."c"
: столбцы изa
ищутся среди столбцов вb
.orien
не указано: элементы изa
ищутся среди элементовb
.
- v
- Массив с типом данных как у
a
и кодированный:- сортированный вектор из компонентов
a
, которые отсутствуют вb
. orien="r"
: матрица строк изa
, которые отсутствуют вb
, отсортированный в лексикографическом порядке.orien="c"
: матрица столбцов изa
, которые отсутствуют вb
, отсортированный в лексикографическом порядке.
- сортированный вектор из компонентов
- ka
вектор линейный индексов выбранных элементов, строк, столбцов из
a
таких, чтоv = a(ka)
либоv = a(ka,:)
(orien="r"
) либоv = a(:,ka)
(orien="c"
)
Описание
setdiff(a, b,..)
вычисляет и возвращает элементы либо строк либо
столбцов из a
, которые ОТСУТСТВУЮТ в b
.
Все дупликаты (элементы или строк или столбцов) удаляются из a
и
из b
перед обработкой.
Если a
- гиперматрица и используется опция "r"
,
то перед обработкой a
заменяется матрицей, состоящией из строк по
всем своим более высоким размерностям. То же самое и в случае, если
b
является гиперматрицей. Если исползуется опция
"c"
, то a
или/и "b"
заменяются соответствующими матрицами, состоящими из всех своих столбцов.
Формат результатов представлен в следующей таблице, в соответствии с формой
a
и опцией orien
. Во всех случаях, если все
элементы a
находятся в b
, возвращается
[]
для v
как для ka
:
orien → | отсутствует | "r" | "c" | |||
---|---|---|---|---|---|---|
a ↓ | v | ka | v | ka | v | ka |
строка | cтр | cтр | cтр | скал | cтр | cтр |
столбец | cтлб | cтлб | cтлб | cтлб | cтлб | скал |
матрица | cтлб | cтлб | матр | cтлб | матр | cтр |
гиперматрица | cтлб | cтлб | матр | cтлб | матр | cтр |
скаляр | скал | скал | скал | скал | скал | скал |
v
и ka
становятся пустыми
[]
, если a
пуста (либо b
),
или все элементы a
находятся в b
.
Для логических значений, setdiff(…)
полезна главным образом с опциями
"r"
или "c"
.
Примеры
Пример №1:
--> a = grand(1, 10,"uin", 0, 9) a = 2. 2. 4. 5. 4. 1. 9. 5. 8. 3. --> b = grand(2, 4, "uin", 0, 9) b = 5. 0. 9. 9. 5. 6. 0. 4. --> [d, k] = setdiff(a, b); --> d, k d = 1. 2. 3. 8. k = 6. 1. 10. 9.
Пример №2: постолбцовая обработка
--> a = grand(2, 7,"uin", 0, 3) a = 0. 1. 0. 2. 3. 0. 2. 2. 2. 2. 1. 0. 1. 2. --> b = grand(2, 10, "uin", 0, 3) b = 1. 1. 3. 1. 1. 1. 3. 0. 2. 0. 3. 3. 2. 2. 0. 0. 1. 0. 1. 0. --> [d, k] = setdiff(a, b, "c"); --> d, k d = 0. 0. 2. 3. 1. 2. 2. 0. k = 6. 1. 7. 5.
Пример №3: с текстом
v1 = tokens("ab ca ba bb ca cb ba aa cc bc ac aa")' v2 = tokens("cc ac ca bb ac bc ab")' [r, k] = setdiff(v1, v2); r, k
--> v1 = tokens("ab ca ba bb ca cb ba aa cc bc ac aa")' v1 = !ab ca ac bb ca cb ba aa cc bc ac aa ! --> v2 = tokens("cc ac ca bb ac bc ab")' v2 = !cc ac ca bb ac bc ab ! --> [r, k] = setdiff(v1, v2); --> r, k r = !aa ba cb ! k = 8. 3. 6.
Смотрите также
- unique — удалить все повторяющиеся компоненты из вектора или матрицы
- union — Множество всех элементов, строк или столбцов двух массивов без дубликатов
- members — count (and locate) in an array each element or row or column of another array
- vectorfind — ищет расположение вектора (отмеченный символом групповой подстановки) в матрице или гиперматрице
История
Версия | Описание |
< 5.0 | Функция введена. |
6.0.2 | Добавлены опции "r" | "c", включая гиперматрицы. |
6.1.0 | Теперь допускаются комплексные числа. |
6.1.1 | Теперь допускаются логические и разрежённые (логические или числовые) входные данные. |
Report an issue | ||
<< intersect | Операции с множествами | union >> |