Convert digital filter transfer function data to second-order sections form
tf2sos
uses a four-step algorithm to determine the second-order
section representation for an input transfer function system:
It finds the poles and zeros of the system given by b
and
a
.
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:
Match the poles closest to the unit circle with the zeros closest to those poles.
Match the poles next closest to the unit circle with the zeros closest to those poles.
Continue until all of the poles and zeros are matched.
tf2sos
groups real poles into sections with the real poles
closest to them in absolute value. The same rule holds for real zeros.
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 order
as
'down'
.
tf2sos
scales the sections by the norm specified in
scale
. For arbitrary H(ω), the scaling is defined by
where p can be either ∞ or 2. See the references for details on the scaling. The algorithm follows this scaling in an attempt to minimize overflow or peak round-off noise in fixed-point filter implementations.
[1] Jackson, L. B. Digital Filters and Signal Processing. 3rd ed. Boston: Kluwer Academic Publishers, 1996.
[2] Mitra, S. K. Digital Signal Processing: A Computer-Based Approach. New York: McGraw-Hill, 1998.
[3] Vaidyanathan, P. P. “Robust Digital Filter Structures.” Handbook for Digital Signal Processing (S. K. Mitra and J. F. Kaiser, eds.). New York: John Wiley & Sons, 1993.