# intersect

returns the vector of common values of two vectors

## Calling Sequence

    [v [,ka,kb]]=intersect(a,b)

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

## Arguments

a

  vector of numbers or strings

b

  vector of numbers or strings

orient

  flag with possible values : 1 or "r", 2 or "c"

v

  row vector of numbers or strings

ka

  row vector of integers

kb

  row vector of integers

## Description

`intersect(a,b)` returns a sorted row vector of common values of two vectors of `a` and `b`.

`[v,ka,kb]=intersect(a,b)` also returns index vectors `ka` and `kb` such that `v=a(ka)` and `v=b(kb)`.

`intersect(a,b,"r")` or `intersect(a,b,1)`returns the matrix formed by the intersection of the unique rows of `a` and `b` sorted in lexicographic ascending order. In this case matrices `a` and `b` must have the same number of columns.

`[v,ka,kb]=intersect(a,b,"r")` also returns index vectors `ka` and `kb` such that `v=a(ka,:)` and `v=b(kb,:)`.

`intersect(a,b,"c")` or `intersect(a,b,2)`returns the matrix formed by the intersection of the unique columns of `a` and `b` sorted in lexicographic ascending order. In this case matrices `a` and `b` must have the same number of rows.

`[v,ka,kb]=intersect(a,b,"c")` also returns index vectors `ka` and `kb` such that `v=a(:,ka)` and `v=b(:,kb)`.

## Remark

NaN are considered as different from themselves so they are excluded out of intersection in case of vector intersection.

## Examples

    A=round(5*rand(10,1));
    B=round(5*rand(7,1));

    intersect(A,B)
    [N,ka,kb]=intersect(A,B)

    intersect('a'+string(A),'a'+string(B))

    intersect(int16(A),int16(B))

    //with matrices
     A = [0,0,1,1 1;
          0,1,1,1,1;
          2,0,1,1,1;
          0,2,2,2,2;
          2,0,1,1,1;
          0,0,1,1,%nan];
    B = [1,0,1;
         1,0,2;
         1,2,3;
         2,0,4;
         1,2,5;
         %nan,0,6];

    [v,ka,kb] = intersect(A,B,'c')
    A(:,ka)

## See Also

- members
- unique
- gsort
- union