Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

diag

创建对角矩阵或获取矩阵的对角元素

说明

示例

D = diag(v) 返回包含主对角线上向量 v 的元素的对角矩阵。

示例

D = diag(v,k) 将向量 v 的元素放置在第 k 条对角线上。k=0 表示主对角线,k>0 位于主对角线上方,k<0 位于主对角线下方。

示例

x = diag(A) 返回 A 的主对角线元素的列向量。

示例

x = diag(A,k) 返回 A 的第 k 条对角线上元素的列向量。

示例

全部折叠

创建一个 1×5 的向量。

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

使用 diag 创建一个包含 v 在主对角线上的元素的矩阵。

D = diag(v)
D = 5×5

     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

创建一个包含 v 在第一个上对角线 (k=1) 上的元素的矩阵。

D1 = diag(v,1)
D1 = 6×6

     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

结果为一个 6×6 矩阵。将一个长度为 n 的向量指定为输入时,diag 返回一个大小为 n+abs(k) 的方阵。

获取一个随机 6×6 矩阵的主对角线上的元素。

A = randi(10,6)
A = 6×6

     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 = 6×1

     9
     6
     9
     1
     7
     9

获取 A 的第一个下对角线 (k=-1) 上的元素。结果比主对角线少一个元素。

x1 = diag(A,-1)
x1 = 5×1

    10
    10
     2
     9
     2

调用 diag 两次将返回一个包含原始矩阵的对角线上元素的对角矩阵。

A1 = diag(diag(A))
A1 = 6×6

     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

输入参数

全部折叠

对角线元素,指定为向量。如果 v 是包含 N 个元素的向量,则 diag(v,k)N+abs(k) 阶的方阵。

diag([]) 返回空矩阵 []

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
复数支持:

输入矩阵。如果 ndims(A) > 2diag 将返回错误。

diag([]) 返回空矩阵 []

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
复数支持:

对角线编号,指定为一个整数。k=0 表示主对角线,k>0 位于主对角线上方,k<0 位于主对角线下方。

对于 m×n 矩阵,k 处于范围 (m+1)k(n1).

提示

  • 矩阵的 trace 等于 sum(diag(A))

扩展功能

另请参阅

| | | | | |

在 R2006a 之前推出