Spec-Zone.ru › Octave 7

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 = intersect (…, "sorted") ¶
: c = intersect (…, "stable") ¶
: c = intersect (…, "legacy") ¶
: [c, ia, ib] = intersect (…) ¶

Возвращает уникальные элементы, общие для a и b.

Если a и b являются строчными векторами, то возвращается строчный вектор; в противном случае возвращается столбцовый вектор. Входными данными также могут быть массивы ячеек строк.

Если задан дополнительный входной параметр "rows", то возвращаются общие строки a и b. Для использования этого параметра входные данные должны быть двумерными числовыми матрицами.

Дополнительный аргумент "sorted"/"stable" управляет порядком, в котором уникальные значения появляются в выводе. По умолчанию используется "sorted", и значения в выводе располагаются в порядке возрастания. Альтернативный вариант "stable" сохраняет порядок, найденный во входных данных.

При необходимости возвращаются векторы индексов столбцов ia и ib такие, что c = a(ia) и c = b(ib).

Замечание для программистов: флаг ввода "legacy" изменяет алгоритм, чтобы обеспечить совместимость с выпусками MATLAB до R2012b.

См. также: unique, union, setdiff, setxor, ismember.

: c = union (a, b) ¶
: c = union (a, b, "rows") ¶
: c = union (…, "sorted") ¶
: c = union (…, "stable") ¶
: c = union (…, "legacy") ¶
: [c, ia, ib] = union (…) ¶

Возвращает уникальные элементы, которые находятся либо в a, либо в b.

Если a и b являются строчными векторами, то возвращается строчный вектор; в противном случае возвращается столбцовый вектор. Входными данными также могут быть массивы ячеек строк.

Если задан дополнительный входной параметр "rows", то возвращаются строки, которые находятся либо в a, либо в b. Для использования этого параметра входные данные должны быть двумерными числовыми матрицами.

Дополнительный аргумент "sorted"/"stable" управляет порядком, в котором уникальные значения появляются в выводе. По умолчанию используется "sorted", и значения в выводе располагаются в порядке возрастания. Альтернативный вариант "stable" сохраняет порядок, найденный во входных данных.

Дополнительные выходы ia и ib являются векторами индексов столбцов такими, что a(ia) и b(ib) являются непересекающимися множествами, объединение которых равно c.

Замечание для программистов: флаг ввода "legacy" изменяет алгоритм, чтобы обеспечить совместимость с выпусками MATLAB до R2012b.

См. также: unique, intersect, setdiff, setxor, ismember.

: c = setdiff (a, b) ¶
: c = setdiff (a, b, "rows") ¶
: c = setdiff (…, "sorted") ¶
: c = setdiff (…, "stable") ¶
: c = setdiff (…, "legacy") ¶
: [c, ia] = setdiff (…) ¶

Возвращает уникальные элементы в a, которые не находятся в b.

Если a является строчным вектором, то возвращается строчный вектор; в противном случае возвращается столбцовый вектор. Входными данными также могут быть массивы ячеек строк.

Если задан дополнительный входной параметр "rows", то возвращаются строки в a, которые не находятся в b. Для использования этого параметра входные данные должны быть двумерными числовыми матрицами.

Дополнительный аргумент "sorted"/"stable" управляет порядком, в котором уникальные значения появляются в выводе. По умолчанию используется "sorted", и значения в выводе располагаются в порядке возрастания. Альтернативный вариант "stable" сохраняет порядок, найденный во входных данных.

При необходимости возвращается вектор индексов ia такой, что c = a(ia).

Замечание для программистов: флаг ввода "legacy" изменяет алгоритм, чтобы обеспечить совместимость с выпусками MATLAB до R2012b.

См. также: unique, union, intersect, setxor, ismember.

: c = setxor (a, b) ¶
: c = setxor (a, b, "rows") ¶
: c = setxor (…, "sorted") ¶
: c = setxor (…, "stable") ¶
: c = setxor (…, "legacy") ¶
: [c, ia, ib] = setxor (…) ¶

Возвращает уникальные элементы, эксклюзивные для множеств a или b.

Если a и b являются строчными векторами, то возвращается строчный вектор; в противном случае возвращается столбцовый вектор. Входными данными также могут быть массивы ячеек строк.

Если задан дополнительный входной параметр "rows", то возвращаются строки, эксклюзивные для множеств a и b. Для использования этого параметра входные данные должны быть двумерными числовыми матрицами.

Дополнительный аргумент "sorted"/"stable" управляет порядком, в котором уникальные значения появляются в выводе. По умолчанию используется "sorted", и значения в выводе располагаются в порядке возрастания. Альтернативный вариант "stable" сохраняет порядок, найденный во входных данных.

Дополнительные выходы ia и ib являются векторами индексов столбцов такими, что a(ia) и b(ib) являются непересекающимися множествами, объединение которых равно c.

Замечание для программистов: флаг ввода "legacy" изменяет алгоритм, чтобы обеспечить совместимость с выпусками MATLAB до R2012b.

См. также: unique, union, intersect, setdiff, ismember.

: 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. Для использования этого варианта входные данные должны быть двумерными матрицами с одинаковым количеством столбцов.

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 рассматривается как один элемент множества. Для использования этого аргумента входные данные должны быть двумерной числовой матрицей.

См. также: 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/v7.2.0/Set-Operations.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API