Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

stmcb

スティグリッツ・マクブライド反復法を使用した線形モデルの計算

説明

[b,a] = stmcb(h,nb,na) では、インパルス応答の近似値 h、零点の数の厳密値 nb、極の数の厳密値 na を使用して、システム b(z)/a(z) の係数 ba が求められます。

[b,a] = stmcb(h,nb,na,niter) では、niter 反復が使用されます。既定の反復回数は 5 回です。

[b,a] = stmcb(h,nb,na,niter,ai) では、分母係数の初期推定値としてベクトル ai が使用されます。

[b,a] = stmcb(y,x,___) では、h の代わりにシステム出力 y と入力 x をもつ係数が求められます。yx は同じ長さでなければなりません。

すべて折りたたむ

IIR フィルターのインパルス応答を、より低次のシステムで近似します。

正規化された 3 dB の周波数 0.2π ラジアン/サンプルをもつ 6 次のバタワース フィルターを指定します。

d = designfilt('lowpassiir','FilterOrder',6, ...
    'HalfPowerFrequency',0.2,'DesignMethod','butter');

スティグリッツ・マクブライド反復法を使用して、フィルターを 4 次のシステムで近似します。

h = impz(d);
[bb,aa] = stmcb(h,4,4);

2 つのシステムの周波数応答をプロットします。

hfvt = fvtool(d,bb,aa,'Analysis','freq');
legend(hfvt,'Butterworth','Steiglitz-McBride')

Figure Figure 1: Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Butterworth: Magnitude, Steiglitz-McBride: Magnitude.

入力引数

すべて折りたたむ

インパルス応答。ベクトルとして指定します。

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

分子と分母の次数。正の整数スカラーとして指定します。

  • 全極伝達関数が必要な場合は、nb0 として指定します。

  • 全零伝達関数が必要な場合は、na0 として指定します。

データ型: single | double

反復回数。正のスカラーとして指定します。

分母係数の初期推定。ベクトルとして指定します。指定しない場合、関数 stmcb は分子の次数を 0 に設定して prony の出力を使用します。

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

システムの出力信号。ベクトルとして指定します。

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

システムの入力信号。ベクトルとして指定します。

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

出力引数

すべて折りたたむ

IIR フィルター係数。行ベクトルとして返されます。b の長さは nb + 1a の長さは na + 1 になります。フィルター係数は、以下のように z の次数の降順で順序付けられます。

H(z)=B(z)A(z)=b(1)+b(2)z1++b(nb+1)znba(1)+a(2)z1++a(na+1)zna

アルゴリズム

関数 stmcb では、b(z)/a(z) のインパルス応答 h と入力信号 x との間の二乗誤差が最小化されます。

mina,bi=0|x(i)h(i)|2

この関数は、以下の 2 つのステップを反復します。

  1. 1/a(z) を使用して、h および x にあらかじめフィルターをかけます。

  2. \ を使用して、ba の線形方程式系を解きます。

この関数では、このプロセスが niter 回繰り返されます。この関数では、b および a の係数が niter 回の反復より前に収束したかどうかのチェックは行われません。

参照

[1] Steiglitz, K., and L. McBride. “A Technique for the Identification of Linear Systems.” IEEE® Transactions on Automatic Control 10, no. 4 (October 1965): 461–64. https://doi.org/10.1109/TAC.1965.1098181.

[2] Ljung, Lennart. System Identification: Theory for the User. 2nd ed. Prentice Hall Information and System Sciences Series. Upper Saddle River, NJ: Prentice Hall PTR, 1999.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

| | |