## DIAG Diagonal Matrix Construction/Extraction

Section: Array Generation and Manipulations

### Usage

The `diag` function is used to either construct a diagonal matrix from a vector, or return the diagonal elements of a matrix as a vector. The general syntax for its use is

      y = diag(x,n)

If `x` is a matrix, then `y` returns the `n`-th diagonal. If `n` is omitted, it is assumed to be zero. Conversely, if `x` is a vector, then `y` is a matrix with `x` set to the `n`-th diagonal.

### Examples

Here is an example of `diag` being used to extract a diagonal from a matrix.

    --> A = int32(10*rand(4,5))

    A =
     2 8 3 2 2
     6 8 6 8 5
     8 9 3 9 0
     8 3 7 8 2

    --> diag(A)

    ans =
     2
     8
     3
     8

    --> diag(A,1)

    ans =
     8
     6
     9
     2

Here is an example of the second form of `diag`, being used to construct a diagonal matrix.

    --> x = int32(10*rand(1,3))

    x =
      1  1 10

    --> diag(x)

    ans =
      1  0  0
      0  1  0
      0  0 10

    --> diag(x,-1)

    ans =
      0  0  0  0
      1  0  0  0
      0  1  0  0
      0  0 10  0