union Ensemble de tous les éléments, lignes ou colonnes de deux matrices, sans doublons

## Séquence d'appel

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

## Paramètres

a, b
  tableaux de booléens, de nombres, ou de texte. Matrices creuses booléennes ou numériques acceptées. Les types de `a` et de `b` peuvent être distincts mais compatibles pour la concaténation.

orient
Orientation du traitement :
  - 1 or "r": union des lignes de `a` et de `b`.
  - 2 or "c": union des colonnes de `a` et de `b`.

v
  vecteur ligne, ou matrice. Le type de `v` est celui de `[a(:) ; b(:)]`.

ka
  vecteur ligne d'entiers : rangs dans `a` des éléments/lignes/colonnes de `v` présents dans `a`.

kb
  vecteur ligne d'entiers : rangs dans `b` des éléments/lignes/colonnes de `v` restants issus de `b`.

## Description

`union(a,b)` renvoie un vecteur ligne contenant les valeurs distinctes (classées par ordre croissant) contenues dans les éléments de `[a(:);b(:)]`.

`union(a,b,"r")` ou `union(a,b,1)`renvoie la matrice formée de l'union des lignes distinctes de `a` et `b` triées dans l'ordre lexicographique croissant. Dans ce cas les matrices `a` et `b` doivent avoir le même nombre de colonnes.

`union(a,b,"c")` ou `union(a,b,2)`renvoie la matrice formée de l'union des colonnes distinctes de `a` et `b` triées dans l'ordre lexicographique croissant. Dans ce cas les matrices `a` et `b` doivent avoir le même nombre de lignes.

`[v,ka,kb]=union(a,b)` renvoie aussi les vecteurs d'indices `ka` et `kb` tels que `v` est une combinaison triée des termes de `a(ka)` et `b(kb)`.

## Exemples

    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.

## Voir aussi

- brackets
- unique

## Historique

6.1.0 Extension aux matrices booléennes.
6.1.1 Extension aux matrices creuses booléennes, réelles, ou complexes.