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
векторы, матрицы или гиперматрицы вещественных чисел или кодированных целых чисел или строк. Оба должны иметь одинаковые типы данных (или типы целых чисел).
Если используется опция
orien="r"
, тоa
иb
должны иметь одинаковое количество столбцов. Если используетсяorien="c"
, то они должны иметь одинаковое количество строк.- orien
- направленная обработка:
"r"
: строки изa
ищутся среди строк вb
."c"
: столбцы изa
ищутся среди столбцов вb
.orien
не указано: элементы изa
ищутся среди элементовb
.
- v
- сортированный вектор из компонентов
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
.
Примеры
Пример №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", включая гиперматрицы. |
Report an issue | ||
<< intersect | Операции с множествами | union >> |