возвращает элементы или строк или столбцов массива, которые не принадлежат другому массиву
v = setdiff(a, b) v = setdiff(a, b, orien) [v, ka] = setdiff(..)
векторы, матрицы или гиперматрицы вещественных чисел или кодированных целых чисел или строк. Оба должны иметь одинаковые типы данных (или типы целых чисел).
Если используется опция orien="r", то
a и b должны иметь одинаковое
количество столбцов. Если используется orien="c", то
они должны иметь одинаковое количество строк.
"r": строки из a ищутся среди строк в b."c": столбцы из a ищутся среди
столбцов в b.orien не указано: элементы из a
ищутся среди элементов b.a, которые
отсутствуют в b.orien="r": матрица строк из a,
которые отсутствуют в b, отсортированный в
лексикографическом порядке.orien="c": матрица столбцов из
a, которые отсутствуют в b,
отсортированный в лексикографическом порядке.вектор линейный индексов выбранных элементов, строк, столбцов из
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.
| Версия | Описание |
| < 5.0 | Функция введена. |
| 6.0.2 | Добавлены опции "r" | "c", включая гиперматрицы. |