union Множество всех элементов, строк или столбцов двух массивов без дубликатов

## Синтаксис

                [v, ka, kb] = union(a, b)
                [v, ka, kb] = union(a, b, orient)

## Аргументы

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

orient
  направление обработки:
  - 1 или "r": объединение выполняется по строкам;
  - 2 или "c": объеднение выполняется по столбцам.

v
  вектор-строка или матрица. Тип данных `v` является типом результата `[a(:) ; b(:)]`.

ka
  вектор-строка целых чисел: индексы в `a` элементов/строк/столбцов `v`, пришедшие из `a`.

kb
  вектор-строка целых чисел: индексы в `b` оставшихся элементов/строк/столбцов `v`, пришедших из `b`.

## Описание

`union(a,b)` возвращает отсортированную вектор-строку, которая содержит уникальные элементы `[a(:);b(:)]`.

`union(a,b,"r")` или `union(a,b,1)` возвращает матрицу, сформированную объединением уникальных строк `a` и `b`, отсортированную в лексикографическом порядке возрастания. В этом случае матрицы `a` и `b` должны иметь одинаковое количество столбцов.

`union(a,b,"c")` или `union(a,b,2)` возвращает матрицу, сформированную объединением уникальных столбцов `a` и `b`, отсортированную в лексикографическом порядке возрастания. В этом случае матрицы `a` и `b` должны иметь одинаковое количество строк.

`[v,ka,kb]=union(a,b)` также возвращает векторы индексов `ka` и `kb` такие, что `v` является сортированной комбинацией элементов `a(ka)` и `b(kb)`.

## Примеры

    A = [6  7  6 ; 5  8  3 ];
    B = [1  7  1  0  6 ];

    union(A, B)
    [u, ka, kb] = union(A, B)

    --> union(A, B)
     ans  =
       0.   1.   3.   5.   6.   7.   8.

    --> [u, ka, kb] = union(A, B)
     u  =
       0.   1.   3.   5.   6.   7.   8.
     ka  =
       6.   2.   1.   3.   4.
     kb  =
       4.   1.

    A = ["a" "b" "a" "c" "c" "b"
         "b" "c" "a" "b" "c" "c" ];
    B = ["b" "a" "c" "c" "b" "a"
         "a" "c" "b" "b" "b" "b" ];

    [U, ka, kb] = union(A, B, "c")

    --> [U, ka, kb] = union(A, B, "c")
     U  =
      "a"  "a"  "a"  "b"  "b"  "b"  "c"  "c"
      "a"  "b"  "c"  "a"  "b"  "c"  "b"  "c"

     ka  =
       3.   1.   2.   4.   5.

     kb  =
       2.   1.   5.

    [F, T] = (%f, %t);
    A = sparse([T T F T F T ; F F F F T T ; T F F F F T ]); full(A)
    B = sparse([F F T T F F ; T T T T T T ; T F T T T F ]); full(B)

    [U, ka, kb] = union(A, B, "c");
    issparse(U)
    full(U), ka, kb

    --> A = sparse([T T F T F T ; F F F F T T ; T F F F F T ]); full(A)
     ans  =
      T T F T F T
      F F F F T T
      T F F F F T

    --> B = sparse([F F T T F F ; T T T T T T ; T F T T T F ]); full(B)
     ans  =
      F F T T F F
      T T T T T T
      T F T T T F

    --> [U, ka, kb] = union(A, B, "c");
    --> issparse(U)
     ans  =
      T

    --> full(U), ka, kb
     ans  =
      F F F T T T
      F T T F F T
      F F T F T T

     ka  =
       3.   5.   2.   1.   6.
     kb  =
       1.

## Смотрите также

- квадратные скобки
- unique

## История

6.1.0 Расширение до логических матриц.
6.1.1 Расширение до разреженных логических, разреженных вещественных и разреженных комплексных матриц.