Main Content

isbanded

行列が指定したバンド幅内かどうかを判別する

説明

tf = isbanded(A,lower,upper) は、A が指定した下方および上方のバンド幅内の行列の場合は logical 1 (true) を返します。その他の場合は logical 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

行列の主対角線の下側に非ゼロ要素があるので、結果は logical 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

主対角の上側の要素がすべてゼロなので、結果は logical 1 (true) になります。

100 行 100 列のスパース ブロック行列を作成します。行列の下方と上方のバンド幅が 1 以内であるかどうかをテストします。

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

主対角の中心にある非ゼロ ブロックが 2 行 2 列よりも大きいので、結果は logical 0 (false) です。

行列の下方と上方のバンド幅が 3 以内であるかどうかをテストします。

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

非ゼロ対角ブロックが 4 行 4 列なので、行列の上方と下方のバンド幅は 3 です。

入力引数

すべて折りたたむ

入力配列。A の次元数が 2 を超えている場合、isbanded は logical 0 (false) を返します。

データ型: single | double | logical
複素数のサポート: あり

非負の整数スカラーとして指定される下方のバンド幅。下方のバンド幅は、主対角の下側にある非ゼロの対角の数です。境界対角 diag(A,-lower) の下側に非ゼロの要素がある場合、isbanded は logical 0 (false) を返します。

非負の整数スカラーとして指定された上方のバンド幅。上方のバンド幅は、主対角の上側にある非ゼロの対角の数です。境界対角 diag(A,upper) の上側に非ゼロの要素がある場合、isbanded は logical 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))

    上ヘッセンベルグ行列

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

    下ヘッセンベルグ行列

拡張機能

バージョン履歴

R2014a で導入