Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

diagonal

Return a read-only view of the diagonal of a matrix (or stack of matrices).

For an M-by-N matrix A, the k-th diagonal is defined as

$$D_k = \{\, A_{i,j} : j - i = k \,\}$$

where k = 0 corresponds to the main diagonal, k > 0 corresponds to the super-diagonals (above the main diagonal), and k < 0 corresponds to the sub-diagonals (below the main diagonal). For example, given the matrix

$$A = \begin{bmatrix} a_{0,0} & a_{0,1} & a_{0,2} \\ a_{1,0} & a_{1,1} & a_{1,2} \\ a_{2,0} & a_{2,1} & a_{2,2} \end{bmatrix}$$

the main diagonal is [ a_{0,0}, a_{1,1}, a_{2,2} ], the super-diagonal k = 1 is [ a_{0,1}, a_{1,2} ], and the sub-diagonal k = -1 is [ a_{1,0}, a_{2,1} ].

Usage

var diagonal = require( '@stdlib/ndarray/diagonal' );

diagonal( x[, options] )

Returns a read-only view of the diagonal of a matrix (or stack of matrices).

var array = require( '@stdlib/ndarray/array' );

var x = array( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ], [ 7.0, 8.0, 9.0 ] ] );
// returns <ndarray>[ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ], [ 7.0, 8.0, 9.0 ] ]

var y = diagonal( x );
// returns <ndarray>[ 1.0, 5.0, 9.0 ]

The function accepts the following arguments:

  • x: input ndarray.
  • options: function options.

The function accepts the following options:

  • k: diagonal offset. The diagonal offset is interpreted as column - row. Accordingly, when k = 0, the function returns the main diagonal; when k > 0, the function returns the diagonal above the main diagonal; and when k < 0, the function returns the diagonal below the main diagonal. Default: 0.
  • dims: dimension indices defining the plane from which to extract the diagonal. Must contain exactly two unique dimension indices. The first element specifies the row-like dimension. The second element specifies the column-like dimension. If a dimension index is provided as an integer less than zero, the dimension index is resolved relative to the last dimension, with the last dimension corresponding to the value -1. Default: [-2, -1].

Notes

  • The order of the dimension indices contained in options.dims matters. The first element specifies the row-like dimension. The second element specifies the column-like dimension.
  • Each provided dimension index must reside on the interval [-ndims, ndims-1].

Examples

var uniform = require( '@stdlib/random/uniform' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var diagonal = require( '@stdlib/ndarray/diagonal' );

// Create a stack of matrices:
var x = uniform( [ 2, 3, 3 ], -10.0, 10.0 );
console.log( ndarray2array( x ) );

// Extract the main diagonals from the stack:
var y = diagonal( x );
console.log( ndarray2array( y ) );

// Extract super-diagonals from the stack:
y = diagonal( x, {
    'k': 1
});
console.log( ndarray2array( y ) );

// Extract sub-diagonals from the stack:
y = diagonal( x, {
    'k': -1
});
console.log( ndarray2array( y ) );