Signal Processing Toolbox | ![]() ![]() |
表示
[b,a]=
stmcb(x,nb,na) [b,a]=
stmcb(x,u,nb,na) [b,a]=
stmcb(x,nb,na,niter) [b,a]=
stmcb(x,u,nb,na,niter) [b,a]=
stmcb(x,nb,na,niter,ai) [b,a]=
stmcb(x,u,nb,na,niter,ai)
詳細
Steiglitz-McBride反復法は、設定された時間領域インパルス応答をもつIIRフィルタを求めるアルゴリズムです。これは、フィルタ設計とシステム同定(パラメトリックモデリング)に適用できます。
[b,a]
は、近似的にインパルス応答 =
stmcb(x,nb,na)
x
をもつシステム b(z)/a(z)の係数を求めます。ここで、nb
は零点の数、na
は極の数です。
[b,a]
は、入力として =
stmcb(x,u,nb,na)
u
を与え、出力としてx
をもつシステムのシステム係数b
およびa
を求めます。x
とu
は、同じ長さでなければなりません。
[b,a]
および =
stmcb(x,nb,na,niter)
[b,a]
は、 =
stmcb(x,u,nb,na,niter)
niter
回反復します。niter
のデフォルトは5です。
[b,a]
および =
stmcb(x,nb,na,niter,ai)
[b,a]
は、分母係数の初期推定値としてベクトル =
stmcb(x,u,nb,na,niter,ai)
ai
を使用します。ai
を設定しないと、stmcb
は[b,ai] =
prony
(x,0,na)
の出力引数をベクトルai
として使用します。
stmcb
は、IIRフィルタの係数を長さnb+1
とna+1
の行ベクトルb
およびa
に出力します。フィルタ係数は、zの次数の降順で順序付けられます。
例題
Butterworthフィルタのインパルス応答を、より低次のシステムに近似させます。
[b,a]=
butter(6,0.2); h=
filter(b,a,[1 zeros(1,100)]); freqz(b,a,128) [bb,aa]=
stmcb(h,4,4); freqz(bb,aa,128)
アルゴリズム
stmcb
は、b(z)/a(z)のインパルス応答x'と入力信号x
との間の二乗和誤差を最小化します。
stmcb
は、このプロセスをniter
回繰り返します。b
およびa
の係数がniter
回の反復より前に収束したかどうかについてのチェックは行われません。
診断
x
とu
の長さが異なる場合、stmcb
は、つぎのエラーメッセージを表示します。
X and U must have same length.
参考
|
Levinson-Durbin再帰法 |
|
線形予測係数 |
|
Yule-Walker法を使ったARモデルパラメータの推定 |
|
Prony法を使った時間領域IIRフィルタ設計 |
参考文献
[1] Steiglitz, K., and L.E. McBride, "A Technique for the Identification of Linear Systems," IEEE Trans. Automatic Control, Vol. AC-10 (1965), pp. 461-464.
[2] Ljung, L., System Identification: Theory for the User, Prentice-Hall, Englewood Cliffs, NJ, 1987, p. 297.
![]() | ss2zp | strips | ![]() |