## UNIQUE Unique

Section: Array Generation and Manipulations

### Usage

Returns a vector containing the unique elements of an array. The first form is simply

       y = unique(x)

where `x` is either a numerical array or a cell-array of strings. The result is sorted in increasing order. You can also retrieve two sets of index vectors

       [y, m, n] = unique(x)

such that `y = x(m)` and `x = y(n)`. If the argument `x` is a matrix, you can also indicate that FreeMat should look for unique rows in the matrix via

       y = unique(x,'rows')

and

       [y, m, n] = unique(x,'rows')

### Example

Here is an example in row mode

    --> A = randi(1,3*ones(15,3))
    A =
      <int32>  - size: [15 3]

    Columns 1 to 3
     2  3  2
     2  1  1
     2  2  3
     2  1  3
     2  2  3
     2  1  2
     1  2  2
     1  1  1
     3  1  3
     2  2  2
     1  3  3
     1  2  3
     3  1  1
     3  3  1
     2  3  3
    --> unique(A,'rows')
    ans =
      <int32>  - size: [14 3]

    Columns 1 to 3
     1  1  1
     1  2  2
     1  2  3
     1  3  3
     2  1  1
     2  1  2
     2  1  3
     2  2  2
     2  2  3
     2  3  2
     2  3  3
     3  1  1
     3  1  3
     3  3  1
    --> [b,m,n] = unique(A,'rows');
    --> b
    ans =
      <int32>  - size: [14 3]

    Columns 1 to 3
     1  1  1
     1  2  2
     1  2  3
     1  3  3
     2  1  1
     2  1  2
     2  1  3
     2  2  2
     2  2  3
     2  3  2
     2  3  3
     3  1  1
     3  1  3
     3  3  1
    --> A(m,:)
    ans =
      <int32>  - size: [14 3]

    Columns 1 to 3
     1  1  1
     1  2  2
     1  2  3
     1  3  3
     2  1  1
     2  1  2
     2  1  3
     2  2  2
     2  2  3
     2  3  2
     2  3  3
     3  1  1
     3  1  3
     3  3  1
    --> b(n,:)
    ans =
      <int32>  - size: [15 3]

    Columns 1 to 3
     2  3  2
     2  1  1
     2  2  3
     2  1  3
     2  2  3
     2  1  2
     1  2  2
     1  1  1
     3  1  3
     2  2  2
     1  3  3
     1  2  3
     3  1  1
     3  3  1
     2  3  3

Here is an example in vector mode

    --> A = randi(1,5*ones(10,1))
    A =
      <int32>  - size: [10 1]

    Columns 1 to 1
     5
     5
     5
     3
     5
     3
     4
     1
     3
     2
    --> unique(A)
    ans =
      <int32>  - size: [5 1]

    Columns 1 to 1
     1
     2
     3
     4
     5
    --> [b,m,n] = unique(A,'rows');
    --> b
    ans =
      <int32>  - size: [5 1]

    Columns 1 to 1
     1
     2
     3
     4
     5
    --> A(m)
    ans =
      <int32>  - size: [5 1]

    Columns 1 to 1
     1
     2
     3
     4
     5
    --> b(n)
    ans =
      <int32>  - size: [10 1]

    Columns 1 to 1
     5
     5
     5
     3
     5
     3
     4
     1
     3
     2

For cell arrays of strings.

    --> A = {'hi','bye','good','tell','hi','bye'}
    A =
      <cell array> - size: [1 6]

    Columns 1 to 3
     hi    bye    good

    Columns 4 to 6
     tell    hi    bye
    --> unique(A)
    ans =
      <cell array> - size: [4 1]

    Columns 1 to 1
     bye
     good
     hi
     tell