diag#
Purpose#
Creates a column vector from the diagonal of a matrix.
Format#
- y = diag(x)#
- Parameters:
x (NxK matrix or LxNxK array) – Data matrix.
- Returns:
y (min(N,K)x1 vector or L-dimensional array) – The diagonal of the x matrix where the last two dimensions are min(N,K)x1.
Examples#
Get the diagonal from a matrix.#
// Set rng seed for reproducibility
rndseed 458716;
// Create random matrix
x = rndu(3, 3);
// Take diagonal of y
y = diag(x);
// Print results
print "x = " x;
print "y = " y;
After the above code,
x =
0.96748215 0.31791692 0.46520760
0.04558545 0.78613263 0.20528802
0.73825699 0.30528745 0.73350290
y =
0.96748215
0.78613263
0.73350290
Using diag()
function for a 2x4x4 dimensional array.#
// Create random matrix
x = rndn(32, 1);
// Reshape the 32x1 vector into a 2x4x4 dimensional array
x = areshape(x, 2|4|4);
d = diag(x);
Now x is equal to:
Plane [1,.,.]
1.0305361 -1.5803315 0.31002373 -0.99371013
-1.3967459 0.79842593 0.57613617 1.0063836
-0.22636263 0.89422800 0.089845674 0.56126503
1.1532259 1.1146830 0.60477874 -0.035759847
Plane [2,.,.]
1.1957213 -0.57905631 -0.75646146 -0.068990606
1.5065762 0.43443580 -0.033498917 -1.5231533
1.1028613 -2.0432636 -1.0517457 0.021677957
-1.0861596 -0.76471535 -0.60429045 0.49674694
and d is a 2x4x1 array containing the diagonals from x above.
Plane [1,.,.]
1.0305361
0.79842593
0.089845674
-0.035759847
Plane [2,.,.]
1.1957213
0.43443580
-1.0517457
0.49674694
Remarks#
If x is a matrix, it need not be square. Otherwise, if x is an array, the last two dimensions need not be equal.
If x is an array, the result will be an array containing the diagonals of each 2-dimensional array described by the two trailing dimensions of x. For example, for a 10x4x4 array, the result will be a 10x4x1 array containing the diagonals of each of the 10 4x4 arrays contained in x.
diagrv()
reverses the procedure and puts a vector into the diagonal of a
matrix.
See also
Functions diagrv()