Documentation Center

  • Trial Software
  • Product Updates
我们为许可用户提供了部分翻译好的中文文档。您只需登录便可查阅这些文档

Operating on Diagonal Matrices

Diagonal Matrix Functions

There are several MATLAB® functions that work specifically on diagonal matrices.

Function

Description

blkdiag

Construct a block diagonal matrix from input arguments.

diag

Return a diagonal matrix or the diagonals of a matrix.

trace

Compute the sum of the elements on the main diagonal.

tril

Return the lower triangular part of a matrix.

triu

Return the upper triangular part of a matrix.

Constructing a Matrix from a Diagonal Vector

The diag function has two operations that it can perform. You can use it to generate a diagonal matrix:

A = diag([12:4:32])
A =
    12     0     0     0     0     0
     0    16     0     0     0     0
     0     0    20     0     0     0
     0     0     0    24     0     0
     0     0     0     0    28     0
     0     0     0     0     0    32

You can also use the diag function to scan an existing matrix and return the values found along one of the diagonals:

A = magic(5)
A =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

diag(A, 2)       % Return contents of second diagonal of A
ans =
     1
    14
    22

Returning a Triangular Portion of a Matrix

The tril and triu functions return a triangular portion of a matrix, the former returning the piece from the lower left and the latter from the upper right. By default, the main diagonal of the matrix divides these two segments. You can use an alternate diagonal by specifying an offset from the main diagonal as a second input argument:

A = magic(6);

B = tril(A, -1)
B =
     0     0     0     0     0     0
     3     0     0     0     0     0
    31     9     0     0     0     0
     8    28    33     0     0     0
    30     5    34    12     0     0
     4    36    29    13    18     0

Concatenating Matrices Diagonally

You can diagonally concatenate matrices to form a composite matrix using the blkdiag function. See Creating a Block Diagonal Matrix for more information on how this works.

Was this topic helpful?