Main Content

isdiag

确定矩阵是否为对角矩阵

说明

示例

如果 A对角矩阵,则 tf = isdiag(A) 返回逻辑值 1 (true)。否则,将返回逻辑值 0 (false)。

示例

全部折叠

创建一个 4×4 单位矩阵。

I = eye(4)
I = 4×4

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

测试矩阵是否为对角矩阵。

isdiag(I)
ans = logical
   1

矩阵是对角矩阵,因为所有非零元素都在主对角线上。

创建一个主对角线和第一条对角线上具有非零元素的矩阵。

A = 3*eye(4) + diag([2 2 2],1)
A = 4×4

     3     2     0     0
     0     3     2     0
     0     0     3     2
     0     0     0     3

测试矩阵是否为对角矩阵。

isdiag(A)
ans = logical
   0

矩阵不是对角矩阵,因为主对角线上方有非零元素。

根据 A 的主对角线元素创建一个新矩阵 B

B = diag(diag(A));

测试 B 是否为对角矩阵。

isdiag(B)
ans = logical
   1

矩阵是对角矩阵,因为在主对角线上下没有非零元素。

输入参数

全部折叠

输入数组。如果 A 有两个以上的维度,则 isdiag 返回逻辑值 0 (false)。

数据类型: single | double | logical
复数支持:

详细信息

全部折叠

对角矩阵

如果一个矩阵的主对角线上方和下方的所有元素均为零,则该矩阵为对角矩阵。主对角线上的任意数量的元素也可为零。

例如,此 4×4 单位矩阵是对角矩阵。

I4=(1000010000100001)

对角矩阵多为方阵,但并非全部为方阵。

提示

  • 使用 diag 函数可生成 isdiag 对其返回逻辑值 1 (true) 的对角矩阵。

  • 函数 isdiagistriuistril 是函数 isbanded 的特例,可使用适当定义的上带宽和下带宽执行所有相同测试。例如,isdiag(A) == isbanded(A,0,0)

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2014a 中推出

另请参阅

| | | | | |