Spec-Zone.ru › Octave 9

Вверх: Sets [Contents][Index]

27.1 Операции над множествами ¶

Octave поддерживает несколько основных операций над множествами. Octave может вычислять объединение, пересечение и разность двух множеств. Octave также поддерживает операцию над множествами Exclusive Or.

Функции для операций над множествами работают одинаково, принимая два входных множества и возвращая третье множество. В качестве примера предположим, что 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, ismembertol.

: tf = ismembertol (a, s) ¶
: tf = ismembertol (a, s, tol) ¶
: tf = ismembertol (a, s, name, value) ¶
: [tf, s_idx] = ismembertol (…) ¶

Проверка, являются ли значения членами множества с точностью до определенной погрешности.

Эта функция возвращает логическую матрицу tf с той же формой, что и a, которая равна true (1), где элемент в a близок к s с погрешностью tol, и false (0), если нет. Если tol не указан, используется стандартная погрешность 1e-6.

Если запрашивается второй выходной аргумент, то также возвращается индекс в s каждого соответствующего элемента.

Входы a и s должны быть числовыми значениями.

a = [3, 10, 1];
s = [0:9];
[tf, s_idx] = ismembertol (a, s)
     ⇒ tf = [1, 0, 1]
     ⇒ s_idx = [4, 0, 2]

Можно задать необязательные пары свойство/значение для изменения поведения функции. Свойство может быть одним из следующих строк:

"ByRows"

Если установлено в false (по умолчанию), все элементы в a и s обрабатываются раздельно. Если установлено в true, tf будет true для каждой строки в a, которая совпадает со строкой в s с заданной погрешностью. Две строки, u и v, находятся в пределах погрешности, если они удовлетворяют условию all (abs (u-v) <= tol*max (abs ([a;s]))).

"OutputAllIndices"

Если установлено в false (по умолчанию), s_idx содержит индексы одного из совпадений. Если установлено в true, s_idx — это массив ячеек, содержащий индексы для всех элементов в s, которые находятся в пределах погрешности от соответствующего значения в a.

"DataScale"

Предоставленное значение DS используется для изменения коэффициента масштабирования в тесте погрешности на abs (u-v) <= tol*DS. По умолчанию максимальное абсолютное значение в a и s используется в качестве коэффициента масштабирования.

Пример:

s = [1:6].' * pi;
a = 10.^log10 (x);
[tf, s_idx] = ismembertol (a, s);

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

: p = powerset (a) ¶
: p = powerset (a, "rows") ¶

Вычисление множества всех подмножеств (степени множества) множества a.

Множество a должно быть числовой матрицей или массивом ячеек строк. Выход всегда будет массивом ячеек векторов или строк.

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

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

Вверх: Множества [Оглавление][Индекс]

© 1996–2023 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/v9.2.0/Set-Operations.html

Spec-Zone.ru

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