27.1 Операции над множествами
Octave поддерживает несколько основных операций над множествами. Octave может вычислять объединение, пересечение и разность двух множеств. Octave также поддерживает операцию Исключающее ИЛИ над множествами.
Функции для операций над множествами работают одинаково, принимая два входных множества и возвращая третье множество. Например, предположим, что a и b содержат два множества, тогда
union (a, b)
вычисляет объединение двух множеств.
Наконец, определить, принадлежат ли элементы множеству, можно с помощью функции ismember. Поскольку множества упорядочены, эта операция очень эффективна и имеет порядок O(log2(n)), что предпочтительнее функции find, которая имеет порядок O(n).
- c = intersect (a, b)
- c = intersect (a, b, "rows")
- [c, ia, ib] = intersect (…)
-
Возвращает уникальные элементы, общие для обоих a и b, отсортированные по возрастанию.
Если a и b являются строчными векторами, то возвращается строчный вектор; в противном случае возвращается столбец. Входные данные также могут быть массивами ячеек строк.
Если задан необязательный вход
"rows", то возвращаются общие строки a и b. Входные данные должны быть матрицами 2-хмерными матрицами, чтобы использовать этот параметр.Если запрошены, возвращаются индексные векторы ia и ib такие, что
c = a(ia)иc = b(ib).
- c = union (a, b)
- c = union (a, b, "rows")
- [c, ia, ib] = union (…)
-
Возвращает уникальные элементы, которые находятся либо в a, либо в b, отсортированные по возрастанию.
Если a и b являются строчными векторами, то возвращается строчный вектор; в противном случае возвращается столбец. Входные данные также могут быть массивами ячеек строк.
Если задан необязательный вход
"rows", то возвращаются строки, которые находятся либо в a, либо в b. Входные данные должны быть матрицами 2-хмерными матрицами, чтобы использовать этот параметр.Необязательные выходные значения ia и ib являются индексными векторами такими, что
a(ia)иb(ib)являются непересекающимися множествами, объединение которых является c.
- c = setdiff (a, b)
- c = setdiff (a, b, "rows")
- [c, ia] = setdiff (…)
-
Возвращает уникальные элементы в a, которые не находятся в b, отсортированные по возрастанию.
Если a является строчным вектором, возвращается строчный вектор; в противном случае возвращается столбец. Входные данные также могут быть массивами ячеек строк.
Если задан необязательный вход
"rows", то возвращаются строки в a, которые не находятся в b. Входные данные должны быть матрицами 2-хмерными матрицами, чтобы использовать этот параметр.Если запрошен, возвращается индексный вектор ia такой, что
c = a(ia).
- c = setxor (a, b)
- c = setxor (a, b, "rows")
- [c, ia, ib] = setxor (…)
-
Возвращает уникальные элементы, исключительные для множеств a или b, отсортированные по возрастанию.
- tf = ismember (a, s)
- tf = ismember (a, s, "rows")
- [tf, s_idx] = ismember (…)
-
Возвращает логическую матрицу tf с той же формой, что и a, которая равна true (1), если элемент в a найден в s, и false (0), если он не найден.
Если запрошен второй выходной аргумент, то также возвращается индекс в s каждого соответствующего элемента.
a = [3, 10, 1]; s = [0:9]; [tf, s_idx] = ismember (a, s) ⇒ tf = [1, 0, 1] ⇒ s_idx = [4, 0, 2]Входные данные a и s также могут быть массивами ячеек.
a = {"abc"}; s = {"abc", "def"}; [tf, s_idx] = ismember (a, s) ⇒ tf = 1 ⇒ s_idx = 1Если задан необязательный третий аргумент
"rows", то сравниваются строки в a со строками в s. Входные данные должны быть матрицами 2-хмерными матрицами с одинаковым числом столбцов, чтобы использовать этот параметр.a = [1:3; 5:7; 4:6]; s = [0:2; 1:3; 2:4; 3:5; 4:6]; [tf, s_idx] = ismember (a, s, "rows") ⇒ tf = logical ([1; 0; 1]) ⇒ s_idx = [2; 0; 5];См. также: lookup, unique, union, intersect, setdiff, setxor.
- powerset (a)
- powerset (a, "rows")
-
Вычисляет множество всех подмножеств множества a.
Множество a должно быть числовой матрицей или массивом ячеек строк. Выход всегда будет массивом ячеек векторов или строк.
С необязательным аргументом
"rows", каждая строка множества a рассматривается как один элемент множества. Входные данные должны быть матрицами 2-хмерными числовыми матрицами, чтобы использовать этот аргумент.См. также: unique, union, intersect, setdiff, setxor, ismember.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Set-Operations.html