Main Content

toeplitz

説明

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

T = toeplitz(r) は、次のような対称テプリッツ行列を返します。

  • r が実数ベクトルである場合、r は行列の最初の行を定義します。

  • r が、最初の要素が実数である複素数ベクトルである場合、r は最初の行を定義し、r' は最初の列を定義します。

  • r の最初の要素が複素数の場合、テプリッツ行列は主対角を除いてエルミートです。つまり、ij のときに Ti,j=conj(Tj,i) です。主対角の要素は r(1) に設定されます。

すべて折りたたむ

r = [1 2 3];
toeplitz(r)
ans = 3×3

     1     2     3
     2     1     2
     3     2     1

指定された列ベクトルと行ベクトルを使用して非対称テプリッツ行列を作成します。列ベクトルと行ベクトルの最初の要素が一致しないため、toeplitz は警告を表示して対角要素に列を使用します。

c = [1  2  3 4];
r = [4 5 6];
toeplitz(c,r)
Warning: First element of input column does not match first element of input row. 
         Column wins diagonal conflict.
ans = 4×3

     1     5     6
     2     1     5
     3     2     1
     4     3     2

複素数の行および列ベクトルを使用してテプリッツ行列を作成します。

c = [1+3i 2-5i -1+3i];
r = [1+3i 3-1i -1-2i];
T = toeplitz(c,r)
T = 3×3 complex

   1.0000 + 3.0000i   3.0000 - 1.0000i  -1.0000 - 2.0000i
   2.0000 - 5.0000i   1.0000 + 3.0000i   3.0000 - 1.0000i
  -1.0000 + 3.0000i   2.0000 - 5.0000i   1.0000 + 3.0000i

toeplitz を使用して循環行列を作成できます。循環行列は、巡回畳み込みなどの用途で使用されます。

toeplitz を使用してベクトル v から循環行列を作成します。

v = [9 1 3 2];
toeplitz([v(1) fliplr(v(2:end))], v)
ans = 4×4

     9     1     3     2
     2     9     1     3
     3     2     9     1
     1     3     2     9

toeplitz を使用して畳み込み用の循環行列を作成し、離散時間巡回畳み込みを実行します。

周期的入力 x とシステム応答 h を定義します。

x = [1 8 3 2 5];
h = [3 5 2 4 1];

列ベクトル c を作成し、length(c) = length(h) であるような循環行列を作成します。

c = [x(1) fliplr(x(end-length(h)+2:end))]
c = 1×5

     1     5     2     3     8

x から行ベクトル r を作成します。

r = x;

toeplitz 使用して、畳み込み行列 xConv を作成します。h*xConv で畳み込みを求めます。

xConv = toeplitz(c,r)
xConv = 5×5

     1     8     3     2     5
     5     1     8     3     2
     2     5     1     8     3
     3     2     5     1     8
     8     3     2     5     1

h*xConv
ans = 1×5

    52    50    73    46    64

Signal Processing Toolbox™ がある場合、関数cconv (Signal Processing Toolbox)を使って循環畳み込みを求めることができます。

toeplitz を使用して畳み込み用の配列を作成し、離散時間畳み込みを実行します。

入力 x とシステム応答 h を定義します。

x = [1 8 3 2 5];
h = [3 5 2];

x をゼロでパディングして r を作成します。r の長さが畳み込みの長さ x + h - 1 になります。

r = [x zeros(1,length(h)-1)]
r = 1×7

     1     8     3     2     5     0     0

列ベクトル c を作成します。列により対角が決まるので、最初の要素を x(1) に設定します。畳み込みでは length(c)length(h) に等しくなければならないので、c をパディングします。

c = [x(1) zeros(1,length(h)-1)]
c = 1×3

     1     0     0

toeplitz 使用して、畳み込み行列 xConv を作成します。次に、h*xConv を使用して畳み込みを求めます。

xConv = toeplitz(c,r)
xConv = 3×7

     1     8     3     2     5     0     0
     0     1     8     3     2     5     0
     0     0     1     8     3     2     5

h*xConv
ans = 1×7

     3    29    51    37    31    29    10

conv を使用して、結果が正しいことを確認します。

conv(x,h)
ans = 1×7

     3    29    51    37    31    29    10

入力引数

すべて折りたたむ

テプリッツ行列の列。スカラーまたはベクトルとして指定します。cr の最初の要素が異なる場合、toeplitz は対角に列の要素を使用します。

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

テプリッツ行列の行。スカラーまたはベクトルとして指定します。cr の最初の要素が異なる場合、toeplitz は対角に列の要素を使用します。

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

詳細

すべて折りたたむ

テプリッツ行列

テプリッツ行列は対角一定行列です。したがって、対角線に沿ってすべての要素が同じ値をもちます。テプリッツ行列 A では Ai,j = ai–j が成り立ち、結果は次のような形式になります。

A=[a0a1a2a1na1a0a1a2a1a0a2a0a1an1a2a1a0].

拡張機能

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

バージョン履歴

R2006a より前に導入

参考

|