diag 対角行列の構築または展開

## 呼び出し手順

                y = diag(vm)
                y = diag(vm, k)

## 引数

vm

  ベクトルまたは行列 (完全または疎行列)

k

  整数 (デフォルト値 0)

y

  ベクトルまたは行列

## 説明

n次(行または列) ベクトル`vm` に関して, `diag(vm)` は`vm`のエントリを 主対角項とする対角行列を返します.

`diag(vm,k)` は,`vm`の エントリを k番目の対角項とする `(n+abs(k))x(n+abs(k))`行列を返します. `k=0`は主対角, `k>0` は上方対角, `k<0` は下方対角です.

`vm`が行列の場合, `diag(vm,k)` は `vm`の k番目の対角項のエントリからなる 列ベクトルとなります. `diag(vm)` は`vm`の主対角項です. `diag(diag(x))` は対角行列です.

`vm` が疎行列の場合, `diag(vm,k)` は疎行列を返します.

対角線形システムを構築するには, `blockdiag`を使用してください.

`eye(A).*A` は `A`の対角エントリからなる対角行列を 返すことに注意してください. これは，任意の行列(定数,多項式,有理数,状態空間線形システム,...) で有効です.

## 例

    diag([1,2])

    A=[1,2;3,4];
    diag(A)  // main diagonal
    diag(A,1)

    diag(sparse(1:10))  // sparse diagonal matrix

    // form a tridiagonal matrix of size 2*m+1
    m=5;diag(-m:m) +  diag(ones(2*m,1),1) +diag(ones(2*m,1),-1)

## 参照

- toeplitz
- eye
- blockdiag
- spec
- bdiag