Compute linear model using Steiglitz-McBride iteration
[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)
Steiglitz-McBride iteration is an algorithm for finding an IIR 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 system b(z)/a(z)
with approximate impulse response
[b,a] = stmcb(y,x,nb,na) finds
the system coefficients
the system that, given
x as input, has
y must be the
[b,a] = stmcb(h,nb,na,niter) and
[b,a] = stmcb(y,x,nb,na,niter) use
The default for
niter is 5.
[b,a] = stmcb(h,nb,na,niter,ai) and
[b,a] = stmcb(y,x,nb,na,niter,ai) use
ai as the initial estimate of the denominator
ai is not specified,
the output argument from
(h,0,na) as the
stmcb returns the IIR filter coefficients
a. The filter
coefficients are ordered in descending powers of z.
Approximate the impulse response of an IIR filter with a system of lower order.
Specify a 6th-order Butterworth filter with normalized 3-dB frequency 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'); legend(hfvt,'Butterworth','Steiglitz-McBride')
y have different
stmcb produces this error message:
Input signal X and output signal Y must have the same length.
stmcb attempts to minimize the squared error
between the impulse response h of b(z)/a(z)
and the input signal x.
stmcb iterates using two steps:
It solves a system of linear equations
a using \.
stmcb repeats this process
No checking is done to see if the
have converged in fewer than
 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.
 Ljung, Lennart. System Identification: Theory for the User. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 1999, p. 354.