Cascaded Transfer Functions
R2026bCascaded transfer functions (CTF) represent a filter as a product of transfer-function sections connected in series, where each factor corresponds to a CTF section. A common use of CTF is to represent a third- or higher-order transfer function as a product of lower-order sections, which can improve numerical robustness and reduce susceptibility to quantization errors.
The CTF form of a transfer function H(z) in terms of the L transfer functions H1(z), H2(z), …, HL(z) is
.
Use the CTF Array Format to represent filters in MATLAB® in the CTF form. With Signal Processing Toolbox™ and DSP System Toolbox™, you can design and analyze digital filters using CTF. To achieve this goal, you can either:
Specify Digital Filters in CTF Format — Specify or import the numerator and denominator coefficients that define the CTF representation of digital filters. For most functions, you can also specify the scale value of each CTF section, for the entire filter, or both.
Return Digital Filters in CTF Format — Return or export the numerator and denominator coefficients that define the CTF representation of digital filters. For some functions, you can also return the scale value for each CTF section or for the entire filter.
CTF Array Format
The CTF format comprises arrays containing coefficients and gain scaling factors (scale values) used to represent the transfer function of a digital filter in CTF form.
Note
Although Signal Processing Toolbox and DSP System Toolbox use this format to read and return CTF representations, it is only one of many ways to represent a filter in CTF form. A filter can have multiple equivalent CTF representations. Different choices of sections, section grouping or permutation, pole-zero cancellations, and scale values can produce different CTF representations that realize the same filter.
Although the CTF array format supports sections of any order, limit each section to fourth order or lower to maintain numerical robustness.
Assume the L-row matrices B and A, and the L + 1-element vector Γ,
,
where L is the number of CTF sections, B and A contain CTF numerator and denominator coefficients, and Γ contains scale values that apply to each or all the CTF sections.
In terms of the elements of B, A, and Γ, the full transfer function of the filter is
.
Numerator and Denominator
Each section of H(z) is a cascaded transfer function, where m ≥ 0 is the numerator order and n ≥ 0 is the denominator order, provided that bℓ,m+1 and aℓ,n+1 are nonzero for ℓ = 1,2,…,L.
Depending on the shape of B and A, the underlying system can represent one of these filter types:
If B is scalar, the system is a cascade of all-pole IIR filters.
If A is scalar, the system is a cascade of FIR filters.
If both B and A are vectors, then the underlying system is a one-section IIR filter (L = 1), with B representing the numerator of the transfer function and A representing the denominator.
If B and A are L-by-3 matrices (m = n = 2), the system is a cascade of L second-order-section (SOS) filters.
If B and A are L-by-5 matrices (m = n = 4), the system is a cascade of L fourth-order-section (FOS) filters.
Scale Values and Gains
Depending on the shape of Γ, the CTF sections are scaled as either of these cases:
If Γ is a scalar, then this value represents the overall scale value of the filter.
If Γ is a vector, then each of the first L scale values corresponds to a CTF section, and the last value represents the overall scale value of the filter.
Thus, the gain at the ℓ-th CTF section and the overall system gain are these:
Gain at the ℓth CTF section,
Overall system gain,
Specify Digital Filters in CTF Format
To analyze, visualize, design, and filter signals using digital filters in the CTF format, specify a filter by listing its coefficients B and A. For most functions, you can also include the scale values by specifying a scalar or vector in Γ.
Supported CTF Input
You can specify CTF input in either of these ways:
Coefficients — When you specify B and A as a pair of L-row matrices, the filter is treated as a sequence of L cascaded transfer functions with unity scale values.
Coefficients and scale values — If you have one or multiple scale values factored out from the coefficient values, you can specify both the coefficients and the scale values in the same syntax (in function and objects) or in the same import dialog box (in apps). Scaling CTF sections is especially important when working with fixed-point arithmetic. Similar output amplitude levels across sections help maintain numerical accuracy and can reduce filter-response distortions caused by limited numeric precision.
When you specify B, A, and Γ, the filter is treated as a sequence of cascaded transfer functions with scale values.
If Γ is a scalar, it is uniformly distributed across all the CTF sections.
If Γ is a vector, it must have L + 1 elements, where L is the number of CTF sections. Each of the first L elements is a scale value that applies to the corresponding CTF section, and the (L + 1)-th value is uniformly distributed across all the CTF sections.
Input Support
This table lists the functions, objects, and apps that support specifying or importing input in CTF format.
| Goal | Function / Object / App | Supported CTF Input |
|---|---|---|
| Filter signals using CTF |
| |
Create digitalFilter objects for analysis,
visualization, and signal filtering |
| |
| Obtain time-domain responses |
| |
| Obtain frequency-domain responses |
| |
| Explore filter properties |
| |
| Obtain zeros and poles from CTF |
| |
| ||
| Create filter System object™ from CTF |
| |
| Analyze and visualize filters interactively |
For more information, see Import Filter Coefficients. | |
| Design filters interactively |
For more information, see Import Filter Coefficients. |
Return Digital Filters in CTF Format
To obtain the digital filter representation in the CTF format for analysis, visualization, design, and signal filtering, return the filter coefficients B and A. For some functions, you can also return Γ with the scale value for each CTF section or for the entire filter.
Supported CTF Output
You can return CTF output in either of these ways:
Coefficients — Return B and A. These coefficient arrays incorporate the scale values.
Coefficients and overall scale value — Return B, A, and Γ, where:
The coefficient arrays B and A incorporate the scale values of the CTF sections.
The scalar Γ contains the overall scale value of the filter. If the first column of B and A is a unity vector, then Γ also represents the overall system gain of the filter.
Coefficients and section scale values — Return B, A, and Γ, where:
The coefficient arrays B and A incorporate the overall scale value of the filter. Thus, the last element of Γ is 1.
The first L elements of Γ contain the scale values of the CTF sections.
Output Support
This table lists the functions, objects, and apps that support returning or exporting output in CTF format.
| Goal | Function / Object / App | Supported CTF Output |
|---|---|---|
| Convert second-order section matrices to CTF |
| |
| Convert zero-pole-gain filter representation to CTF |
| |
Convert digitalFilter objects or System
objects to CTF |
| |
| Design digital filters for analysis, visualization, and signal filtering |
| |
| ||
| Design IIR digital filters |
| |
| Perform frequency transformation from lowpass IIR filters |
| |
| Design filters interactively |
For more information, see Export Filter Coefficients. |
References
[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.