Documentation

stmcb

Compute linear model using Steiglitz-McBride iteration

Syntax

[b,a] = stmcb(h,nb,na)
[b,a] = stmcb(y,x,nb,na)
[b,a] = stmcb(h,nb,na,niter)
[b,a] = stmcb(y,x,nb,na,niter)
[b,a] = stmcb(h,nb,na,niter,ai)
[b,a] = stmcb(y,x,nb,na,niter,ai)

Description

Steiglitz-McBride iteration is an algorithm for finding anIIR filter with a prescribed time-domain impulse response. It has applications in both filter design and system identification (parametric modeling).

[b,a] = stmcb(h,nb,na)finds the coefficientsbandaof the systemb(z)/a(z) with approximate impulse responseh, exactlynbzeros, and exactlynapoles.

[b,a] = stmcb(y,x,nb,na)finds the system coefficientsbandaof the system that, givenxas input, hasyas output.xandymust be the same length.

[b,a] = stmcb(h,nb,na,niter)and

[b,a] = stmcb(y,x,nb,na,niter)useniteriterations. The default forniteris 5.

[b,a] = stmcb(h,nb,na,niter,ai)and

[b,a] = stmcb(y,x,nb,na,niter,ai)use the vectoraias the initial estimate of the denominator coefficients. Ifai没有指定,stmcbuses the output argument from[b,ai] =prony(h,0,na)as the vectorai.

stmcbreturns the IIR filter coefficients in lengthnb+1andna+1row vectorsbanda. The filter coefficients are ordered in descending powers ofz.

H ( z ) = B ( z ) A ( z ) = b ( 1 ) + b ( 2 ) z 1 + + b ( n b + 1 ) z n b a ( 1 ) + a ( 2 ) z 1 + + a ( n a + 1 ) z n a

Examples

collapse all

Approximate the impulse response of an IIR filter with a system of lower order.

指定具有标准化3 dB频率的六阶Butterworth滤波器 0 . 2 π rad/sample.

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

Use the Steiglitz-McBride iteration to approximate the filter with a 4th-order system.

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

Plot the frequency responses of the two systems.

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

Diagnostics

Ifxandyhave different lengths,stmcbproduces this error message:

Input signal X and output signal Y must have the same length.

Algorithms

stmcbattempts to minimize the squared error between the impulse responsehofb(z)/a(z) and the input signalx.

min a , b i = 0 | x ( i ) h ( i ) | 2

stmcbiterates using two steps:

  1. It prefiltershandx使用1/a(z).

  2. It solves a system of linear equations forbandausing \.

stmcbrepeats this processnitertimes. No checking is done to see if thebandacoefficients have converged in fewer thanniteriterations.

参考

[1] Steiglitz, K., and L. E. McBride. “A Technique for the Identification of Linear Systems.”IEEE®Transactions on Automatic Control. Vol. AC-10, 1965, pp. 461–464.

[2] Ljung, Lennart.System Identification: Theory for the User. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 1999, p. 354.

Introduced before R2006a