Main Content

isdiag

行列が対角かどうかを判別

説明

tf = isdiag(A) は、A対角行列の場合は logical 1 (true) を返します。その他の場合は logical 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 が 2 つを超える次元をもつ場合、isdiag は logical 0 (false) を返します。

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

詳細

すべて折りたたむ

対角行列

主対角の上側と下側の要素がすべてゼロである行列は、対角です。また、主対角上の任意の数の要素も、ゼロである可能性があります。

たとえば、この 4 行 4 列の単位行列は対角行列です。

I4=(1000010000100001)

対角行列は通常正方行列ですが、必ずしもそうであるとは限りません。

ヒント

  • 関数 diag を使用して、isdiag が logical 1 (true) を返す対角行列を作成します。

  • 関数 isdiagistriuistril は関数 isbanded の特殊形です。この関数の上方と下方のバンド幅を適切に定義して、同じテストをすべて実行することができます。たとえば、isdiag(A) == isbanded(A,0,0) のようになります。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2014a で導入