Main Content

toeplitz

シンボリックなテプリッツ行列

説明

toeplitz(c,r) は、1 列目が c で、1 行目が r である非対称テプリッツ行列を生成します。cr の最初の要素が異なる場合、toeplitz は警告を発して列の最初の要素を使用します。

toeplitz(r) は、r が実数値である場合に対称テプリッツ行列を生成します。r が複素数値であり、その最初の要素が実数である場合、この構文は、r から形成されるエルミート テプリッツ行列を生成します。r の最初の要素が実数でない場合、結果の行列は主対角でエルミートがオフになります。つまり、i ≠ j の場合、Tij = conjugate(Tji) となります。

テプリッツ行列の生成

次のベクトルからテプリッツ行列を生成します。これらのベクトルはシンボリック オブジェクトではないため、結果は浮動小数点数となります。

c = [1 2 3 4 5 6];
r = [1 3/2 3 7/2 5];
toeplitz(c,r)
ans =
    1.0000    1.5000    3.0000    3.5000    5.0000
    2.0000    1.0000    1.5000    3.0000    3.5000
    3.0000    2.0000    1.0000    1.5000    3.0000
    4.0000    3.0000    2.0000    1.0000    1.5000
    5.0000    4.0000    3.0000    2.0000    1.0000
    6.0000    5.0000    4.0000    3.0000    2.0000

次に、これらのベクトルをシンボリック オブジェクトに変更し、テプリッツ行列を生成します。

c = sym([1 2 3 4 5 6]);
r = sym([1 3/2 3 7/2 5]);
toeplitz(c,r)
ans =
[ 1, 3/2,   3, 7/2,   5]
[ 2,   1, 3/2,   3, 7/2]
[ 3,   2,   1, 3/2,   3]
[ 4,   3,   2,   1, 3/2]
[ 5,   4,   3,   2,   1]
[ 6,   5,   4,   3,   2]

ベクトルからのテプリッツ行列の生成

次のベクトルからテプリッツ行列を生成します。

syms a b c d
T = toeplitz([a b c d])
T =
[       a,       b,       c,       d]
[ conj(b),       a,       b,       c]
[ conj(c), conj(b),       a,       b]
[ conj(d), conj(c), conj(b),       a]

すべての要素を実数として指定した場合、結果のテプリッツ行列は対称行列になります。

syms a b c d real
T = toeplitz([a b c d])
T =
[ a, b, c, d]
[ b, a, b, c]
[ c, b, a, b]
[ d, c, b, a]

計算を続けるため、仮定を syms を使用して変数を再作成することで消去します。

syms a b c d

複素数値によるテプリッツ行列の生成

複素数を含むベクトルからテプリッツ行列を生成します。

T = toeplitz(sym([1, 2, i]))
T =
[  1, 2, 1i]
[  2, 1, 2]
[ -1i, 2, 1]

ベクトルの最初の要素が実数である場合、結果のテプリッツ行列はエルミート行列になります。

isAlways(T == T')
ans =
  3×3 logical array
   1   1   1
   1   1   1
   1   1   1

最初の要素が実数でない場合、結果のテプリッツ行列は主対角でエルミートがオフとなります。

T = toeplitz(sym([i, 2, 1]))
T =
[ 1i, 2, 1]
[ 2, 1i, 2]
[ 1, 2, 1i]
isAlways(T == T')
ans =
  3×3 logical array
     0     1     1
     1     0     1
     1     1     0

競合する最初の要素を持つベクトルの使用

ベクトルを使用して 1 列目と 1 行目を指定し、テプリッツ行列を生成します。これらのベクトルの最初の要素が異なるため、toeplitz は警告を発して列の最初の要素を使用します。

syms a b c
toeplitz([a b c], [1 b/2 a/2])
Warning: First element of given column does not match first element of given row. 
Column wins diagonal conflict.
 
ans =
[ a, b/2, a/2]
[ b,   a, b/2]
[ c,   b,   a]

入力引数

すべて折りたたむ

テプリッツ行列の 1 列目。ベクトルまたはシンボリック ベクトルとして指定します。

テプリッツ行列の 1 行目。ベクトルまたはシンボリック ベクトルとして指定します。

詳細

すべて折りたたむ

テプリッツ行列

テプリッツ行列は、左から右への各下降対角線に沿って定数値をもつ行列です。たとえば、行列 T は対称テプリッツ行列です。

T=(t0t1t2tkt1t0t1t2t1t0t0t1t2t1t0t1tkt2t1t0)

ヒント

  • シンボリック オブジェクトではない数値引数について toeplitz を呼び出すと、MATLAB® 関数 toeplitz が呼び出されます。

バージョン履歴

R2013a で導入

参考