Signal Processing Toolbox Previous page   Next Page
tf2sos

Convert digital filter transfer function data to second-order sections form

Syntax

Description

tf2sos converts a transfer function representation of a given digital filter to an equivalent second-order section representation.

[sos,g] = tf2sos(b,a) finds a matrix sos in second-order section form with gain g that is equivalent to the digital filter represented by transfer function coefficient vectors a and b.

sos is an L-by-6 matrix

whose rows contain the numerator and denominator coefficients bik and aik of the second-order sections of H(z).

[sos,g] = tf2sos(b,a,'order') specifies the order of the rows in sos, where 'order' is

[sos,g] = tf2sos(b,a,'order','scale') specifies the desired scaling of the gain and numerator coefficients of all second-order sections, where 'scale' is:

Using infinity-norm scaling in conjunction with up-ordering minimizes the probability of overflow in the realization. Using 2-norm scaling in conjunction with down-ordering minimizes the peak round-off noise.

sos = tf2sos(...) embeds the overall system gain, g, in the first section, H1(z), so that

Algorithm

tf2sos uses a four-step algorithm to determine the second-order section representation for an input transfer function system:

  1. It finds the poles and zeros of the system given by b and a.
  2. It uses the function zp2sos, which first groups the zeros and poles into complex conjugate pairs using the cplxpair function. zp2sos then forms the second-order sections by matching the pole and zero pairs according to the following rules:
    1. Match the poles closest to the unit circle with the zeros closest to those poles.
    2. Match the poles next closest to the unit circle with the zeros closest to those poles.
    3. Continue until all of the poles and zeros are matched.
  1. tf2sos groups real poles into sections with the real poles closest to them in absolute value. The same rule holds for real zeros.

  1. It orders the sections according to the proximity of the pole pairs to the unit circle. tf2sos normally orders the sections with poles closest to the unit circle last in the cascade. You can tell tf2sos to order the sections in the reverse order by specifying the 'down' flag.
  2. tf2sos scales the sections by the norm specified in the 'scale' argument. For arbitrary H(), the scaling is defined by
  1. where p can be either or 2. See the references for details on the scaling. This scaling is an attempt to minimize overflow or peak round-off noise in fixed point filter implementations.

See Also

cplxpair, sos2tf, ss2sos, tf2ss, tf2zp, tf2zpk, zp2sos

References

[1] Jackson, L.B., Digital Filters and Signal Processing, 3rd ed., Kluwer Academic Publishers, Boston, 1996, Chapter 11.

[2] Mitra, S.K., Digital Signal Processing: A Computer-Based Approach, McGraw-Hill, New York, 1998, Chapter 9.

[3] Vaidyanathan, P.P., "Robust Digital Filter Structures," Handbook for Digital Signal Processing, S.K. Mitra and J.F. Kaiser, ed., John Wiley & Sons, New York, 1993, Chapter 7.


Previous page  tf2latc tf2ss Next page

© 1994-2005 The MathWorks, Inc.