Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

diag

Create diagonal matrix or get diagonal elements of matrix

Syntax

Description

example

D = diag(v) returns a square diagonal matrix with the elements of vector v on the main diagonal.

example

D = diag(v,k) places the elements of vector v on the kth diagonal. k=0 represents the main diagonal, k>0 is above the main diagonal, and k<0 is below the main diagonal.

example

x = diag(A) returns a column vector of the main diagonal elements of A.

example

x = diag(A,k) returns a column vector of the elements on the kth diagonal of A.

Examples

collapse all

Create a 1-by-5 vector.

v = [2 1 -1 -2 -5];

Use diag to create a matrix with the elements of v on the main diagonal.

D = diag(v)
D =

     2     0     0     0     0
     0     1     0     0     0
     0     0    -1     0     0
     0     0     0    -2     0
     0     0     0     0    -5

Create a matrix with the elements of v on the first super diagonal (k=1).

D1 = diag(v,1)
D1 =

     0     2     0     0     0     0
     0     0     1     0     0     0
     0     0     0    -1     0     0
     0     0     0     0    -2     0
     0     0     0     0     0    -5
     0     0     0     0     0     0

The result is a 6-by-6 matrix. When you specify a vector of length n as an input, diag returns a square matrix of size n+abs(k).

Get the elements on the main diagonal of a random 6-by-6 matrix.

A = randi(10,6)
A =

     9     3    10     8     7     8
    10     6     5    10     8     1
     2    10     9     7     8     3
    10    10     2     1     4     1
     7     2     5     9     7     1
     1    10    10    10     2     9

x = diag(A)
x =

     9
     6
     9
     1
     7
     9

Get the elements on the first subdiagonal (k=-1) of A. The result has one fewer element than the main diagonal.

x1 = diag(A,-1)
x1 =

    10
    10
     2
     9
     2

Calling diag twice returns a diagonal matrix composed of the diagonal elements of the original matrix.

A1 = diag(diag(A))
A1 =

     9     0     0     0     0     0
     0     6     0     0     0     0
     0     0     9     0     0     0
     0     0     0     1     0     0
     0     0     0     0     7     0
     0     0     0     0     0     9

Input Arguments

collapse all

Diagonal elements, specified as a vector. If v is a vector with N elements, then diag(v,k) is a square matrix of order N+abs(k).

diag([]) returns an empty matrix, [].

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Complex Number Support: Yes

Input matrix. diag returns an error if ndims(A) > 2.

diag([]) returns an empty matrix, [].

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Complex Number Support: Yes

Diagonal number, specified as an integer. k=0 represents the main diagonal, k>0 is above the main diagonal, and k<0 is below the main diagonal.

For an m-by-n matrix, k is in the range (m+1)k(n1).

More About

collapse all

Tips

  • The trace of a matrix is equal to sum(diag(A)).

See Also

| | | | | |

Introduced before R2006a

Was this topic helpful?