Main Content

isbanded

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

说明

示例

如果 A 是在指定的下带宽和上带宽范围内的矩阵,则 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

通过将下带宽和上带宽都指定为 1,测试矩阵是否为三对角矩阵。

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

矩阵是三对角矩阵,因为它仅在主对角线以及主对角线上下的对角线上有非零元素。

通过将下带宽指定为 0,测试矩阵在主对角线下是否只有值为 0 的元素。

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

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

创建一个 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

测试矩阵在主对角线上方是否只有值为 0 的元素。

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

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

创建一个 100×100 的稀疏分块矩阵。测试矩阵是否在下带宽和上带宽都为 1 的范围内。

B = kron(speye(25),ones(4));
isbanded(B,1,1)
ans = logical
   0

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

测试矩阵是否在下带宽和上带宽都为 3 的范围内。

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

矩阵的上带宽和下带宽为 3,因为非零对角分块为 4×4。

输入参数

全部折叠

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

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

下带宽,指定为非负整数标量。下带宽是主对角线下方的非零对角线数目。如果边界对角线 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 中推出

另请参阅

| | | |