Main Content

diag

対角行列の作成と行列の対角要素の取得

説明

D = diag(v) は、主対角上にベクトル v の要素をもつ正方対角行列を返します。

D = diag(v,k) は、ベクトル v の要素を k 番目の対角に配置します。k=0 は主対角、k>0 は主対角より上の対角、k<0 は主対角より下の対角を表します。

x = diag(A) は、A の主対角要素の列ベクトルを返します。

x = diag(A,k)Ak 番目の対角要素の列ベクトルを返します。

すべて折りたたむ

1 行 5 列のベクトルを作成します。

v = [2 1 -1 -2 -5];

diag を使用して、主対角上に v の要素をもつ行列を作成します。

D = diag(v)
D = 5×5

     2     0     0     0     0
     0     1     0     0     0
     0     0    -1     0     0
     0     0     0    -2     0
     0     0     0     0    -5

最初の上対角 (k=1) に v の要素をもつ行列を作成します。

D1 = diag(v,1)
D1 = 6×6

     0     2     0     0     0     0
     0     0     1     0     0     0
     0     0     0    -1     0     0
     0     0     0     0    -2     0
     0     0     0     0     0    -5
     0     0     0     0     0     0

結果は、6 行 6 列の行列になります。入力として長さ n のベクトルを指定すると、diag はサイズが n+abs(k) の正方行列を返します。

6 行 6 列の乱数の行列から主対角要素を取得します。

A = randi(10,6)
A = 6×6

     9     3    10     8     7     8
    10     6     5    10     8     1
     2    10     9     7     8     3
    10    10     2     1     4     1
     7     2     5     9     7     1
     1    10    10    10     2     9

x = diag(A)
x = 6×1

     9
     6
     9
     1
     7
     9

A の最初の下対角 (k=-1) の要素を取得します。その結果、主対角より要素が 1 つ少なくなります。

x1 = diag(A,-1)
x1 = 5×1

    10
    10
     2
     9
     2

diag を 2 回呼び出すと、元の行列の対角要素からなる対角行列を返します。

A1 = diag(diag(A))
A1 = 6×6

     9     0     0     0     0     0
     0     6     0     0     0     0
     0     0     9     0     0     0
     0     0     0     1     0     0
     0     0     0     0     7     0
     0     0     0     0     0     9

入力引数

すべて折りたたむ

ベクトルとして指定する対角要素。vN 個の要素をもつベクトルの場合、diag(v,k) は次数 N+abs(k) の正方行列になります。

diag([]) は空行列 [] を返します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
複素数のサポート: あり

入力行列。diagndims(A) > 2 の場合はエラーを返します。

diag([]) は空行列 [] を返します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
複素数のサポート: あり

整数として指定する対角番号。k=0 は主対角、k>0 は主対角より上の対角、k<0 は主対角より下の対角を表します。

m 行 n 列の行列の場合、k の範囲は (m+1)k(n1) です。たとえば、n が m より大きい行列の場合、主対角 k=0(1,1)(2,2)、... (m,m) の各インデックスをもつ要素で構成されます。主対角よリ上の k=1(1,2)(2,3)、... (m,m+1) の各インデックスをもつ要素で構成されます。主対角よリ下の k=-1(2,1)(3,2)、... (m,m-1) の各インデックスをもつ要素で構成されます。

Diagonal numbers k=0, k>0, and k<0

ヒント

  • 行列の trace は、sum(diag(A)) と等価です。

拡張機能

バージョン履歴

R2006a より前に導入