Main Content

isbanded

确定矩阵是否在特定带宽范围内

说明

示例

如果矩阵 A 在指定的下带宽 lower 和上带宽 upper 范围内,则 tf = isbanded(A,lower,upper) 返回逻辑值 1 (true);否则返回逻辑值 0 (false)。

示例

全部折叠

创建一个主对角线上方和下方有非零对角线的 5×5 方阵。

A = [2 3 0 0 0 ; 1 -2 -3 0 0; 0 -1 2 3 0 ; 0 0 1 -2 -3; 0 0 0 -1 2]
A = 5×5

     2     3     0     0     0
     1    -2    -3     0     0
     0    -1     2     3     0
     0     0     1    -2    -3
     0     0     0    -1     2

将两个带宽 lowerupper 均指定为 1 以测试 A 是否为三对角矩阵。

isbanded(A,1,1)
ans = logical
   1

结果为逻辑值 1 (true)。

通过将 lower 指定为 0 来测试 A 的主对角线下方是否有非零元素。

isbanded(A,0,1)
ans = logical
   0

结果为逻辑值 0 (false),这是因为 A 的主对角线下方有非零元素。

创建一个 3×5 矩阵。

A = [1 0 0 0 0; 2 1 0 0 0; 3 2 1 0 0]
A = 3×5

     1     0     0     0     0
     2     1     0     0     0
     3     2     1     0     0

测试 A 的主对角线上方是否有非零元素。

isbanded(A,2,0)
ans = logical
   1

结果为逻辑值 1 (true),这是因为主对角线上方的元素均为零。

创建一个 100×100 的稀疏分块矩阵。

B = kron(speye(25),ones(4));

测试 B 的下带宽和上带宽是否为 1

isbanded(B,1,1)
ans = logical
   0

结果为逻辑值 0 (false),这是因为集中在主对角线上的非零分块大于 2×2。

测试 B 的下带宽和上带宽是否为 3

isbanded(B,3,3)
ans = logical
   1

结果为逻辑值 1 (true)。矩阵 B 的上带宽和下带宽为 3,因为非零对角分块为 4×4。

输入参数

全部折叠

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

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

下带宽,指定为非负整数标量。下带宽是主对角线下方的非零对角线数目。如果边界对角线 diag(A,-lower) 下方有非零元素,则 isbanded 返回逻辑值 0 (false)。

上带宽,指定为非负整数标量。上带宽是主对角线上方的非零对角线数目。如果边界对角线 diag(A,upper) 上方有非零元素,则 isbanded 返回逻辑值 0 (false)。

提示

  • 使用 bandwidth 函数可计算给定矩阵的上带宽和下带宽。

  • 使用 isbanded 可通过指定相应的上带宽和下带宽来测试若干个不同矩阵结构体。下表列出了一些常见的测试。

    下带宽

    上带宽

    函数调用

    测试对象

    00isbanded(A,0,0)

    对角矩阵

    11isbanded(A,1,1)

    三对角矩阵

    0size(A,2)isbanded(A,0,size(A,2))

    上三角矩阵

    size(A,1)0isbanded(A,size(A,1),0)

    下三角矩阵

    1size(A,2)isbanded(A,1,size(A,2))

    上 Hessenberg 矩阵

    size(A,1)1isbanded(A,size(A,1),1)

    下 Hessenberg 矩阵

扩展功能

版本历史记录

在 R2014a 中推出

另请参阅

| | | |