Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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 >> |