impinvar

Impulse invariance method for analog-to-digital filter conversion

Syntax

[bz,az] = impinvar(b,a,fs)
[bz,az] = impinvar(b,a,fs,tol)

Description

[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.

Examples

Example 1

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)
bz =
  1.0e-006 *
   -0.0000    0.1324    0.5192    0.1273         0
az =
    1.0000   -3.9216    5.7679   -3.7709    0.9246

Example 2

Illustrate the relationship between analog and digital impulse responses [2].

The steps used in this example are:

  1. Create an analog Butterworth filter

  2. Use impinvar with a sampling frequency Fs of 10 Hz to scale the coefficients by 1/Fs. This compensates for the gain that will be introduced in Step 4 below.

  3. Use Control System Toolbox impulse function to plot the continuous-time unit impulse response of an LTI system.

  4. Plot the digital impulse response, multiplying the numerator by a constant (Fs) to compensate for the 1/Fs gain introduced in the impulse response of the derived digital filter.

    [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.

Algorithm

impinvar performs the impulse-invariant method of analog-to-digital transfer function conversion discussed in reference [1]:

  1. It finds the partial fraction expansion of the system represented by b and a.

  2. It replaces the poles p by the poles exp(p/fs).

  3. It finds the transfer function coefficients of the system from the residues from step 1 and the poles from step 2.

References

[1] Parks, T.W., and C.S. Burrus, Digital Filter Design, John Wiley & Sons, 1987, pp.206-209.

[2] Antoniou, Andreas, Digital Filters, McGraw Hill, Inc, 1993, pp.221-224.

See Also

bilinear, lp2bp, lp2bs, lp2hp, lp2lp

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS