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 = 
  <int32>  - size: [4 5]
 
Columns 1 to 5
 7  1  7  1  4  
 4  5  1  4  1  
 2  2  2  8  2  
 5  5  9  3  5  
--> diag(A)
ans = 
  <int32>  - size: [4 1]
 
Columns 1 to 1
 7  
 5  
 2  
 3  
--> diag(A,1)
ans = 
  <int32>  - size: [4 1]
 
Columns 1 to 1
 1  
 1  
 8  
 5  

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

--> x = int32(10*rand(1,3))
x = 
  <int32>  - size: [1 3]
 
Columns 1 to 3
 4  2  3  
--> diag(x)
ans = 
  <int32>  - size: [3 3]
 
Columns 1 to 3
 4  0  0  
 0  2  0  
 0  0  3  
--> diag(x,-1)
ans = 
  <int32>  - size: [4 4]
 
Columns 1 to 4
 0  0  0  0  
 4  0  0  0  
 0  2  0  0  
 0  0  3  0