Impulse invariance method for analog-to-digital filter conversion
[bz,az] = impinvar(b,a,fs)
[bz,az] = impinvar(b,a,fs,tol)
[bz,az] = impinvar(b,a,fs) creates a digital filter with numerator and denominator coefficients bz and az, respectively, whose impulse response is equal to the impulse response of the analog filter with coefficients b and a, scaled by 1/fs. If you leave out the argument fs, or specify fs as the empty vector , it takes the default value of 1 Hz.
[bz,az] = impinvar(b,a,fs,tol) uses the tolerance specified by tol to determine whether poles are repeated. A larger tolerance increases the likelihood that impinvar interprets closely located poles as multiplicities (repeated ones). The default is 0.001, or 0.1% of a pole's magnitude. Note that the accuracy of the pole values is still limited to the accuracy obtainable by the roots function.
Convert an analog lowpass filter to a digital filter using impinvar with a sampling frequency of 10 Hz:
[b,a] = butter(4,0.3,'s'); [bz,az] = impinvar(b,a,10);
Illustrate the relationship between analog and digital impulse responses .
Note This example requires the impulse function from Control System Toolbox™ software.
The steps used in this example are:
Use Control System Toolbox impulse function to plot the continuous-time unit impulse response of an LTI system.
[b,a] = butter(4,0.3,'s'); [bz,az] = impinvar(b,a,10); sys = tf(b,a); impulse(sys); hold on; impz(10*bz,az,,10);
Zooming the resulting plot shows that the analog and digital impulse responses are the same.
impinvar performs the impulse-invariant method of analog-to-digital transfer function conversion discussed in reference :
 Parks, T.W., and C.S. Burrus, Digital Filter Design, John Wiley & Sons, 1987, pp.206-209.
 Antoniou, Andreas, Digital Filters, McGraw Hill, Inc, 1993, pp.221-224.