Tunable Lowpass IIR Filter

Libraries:
DSP System Toolbox /
Filtering /
Filter Sources
Description
Use the Tunable Lowpass IIR Filter block to design a lowpass IIR filter using the Butterworth, Chebyshev Type I and the Chebyshev Type II design methods. You can tune the filter design specifications such as the filter order, 3-dB cutoff frequency, passband ripple, and the stopband attenuation during simulation. When the values of these parameters change, the block redesigns the filter and outputs the numerator and denominator coefficients in the second-order section (SOS) form.
Examples
Filter Noisy Signal Using Second-Order Section (SOS) Lowpass Filter in Simulink
Filter a noisy sinusoidal signal using the Second-Order Section Filter block. Obtain the numerator and denominator coefficients of the SOS filter using the Tunable Lowpass IIR Filter block.
Tune the frequency specifications of the SOS filter during simulation.
Open and Run Model
Open the secondordersectionfilter_lowpass
model by clicking the Open Model button.
The input signal in the model is a sum of two sine waves with the frequencies of 100 Hz and 350 Hz. The sample rate is 1000 Hz and the number of samples in each frame is 1024. The Random Source block adds zero-mean white Gaussian noise with a variance of 1e-4 to the sum of the sine waves.
The Tunable Lowpass IIR Filter block designs a sixth-order lowpass IIR filter with the 3-dB cutoff frequency of 0.25 rad/sample. The block generates coefficients as a cascade of second-order sections. Visualize the frequency response of the filter using the Filter Visualizer.
Run the model.
The Second-Order Section Filter block filters the noisy sinusoidal signal and attenuates the second tone at 350 Hz. Visualize the original sinusoidal signal and the filtered signal using the Spectrum Analyzer.
Tune Frequency Specifications of SOS Filter
During simulation, you can tune the frequency specifications of the SOS filter by tuning the frequency parameters in the Tunable Lowpass IIR Filter block. The frequency response of the SOS filter updates accordingly.
Change the 3-dB cutoff frequency to 0.75 rad/sample in the Tunable Lowpass IIR Filter block. The second tone of the sinusoidal signal is now unaffected as it now falls in the passband region of the filter.
Ports
Input
N — Filter order
positive integer
Specify the filter order as a positive integer. You can change the filter order you input through this port during simulation.
Dependencies
To enable this port, select the Specify filter order from input port parameter.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Fc — 3-dB cutoff frequency
positive scalar ≤ 1
Specify the 3-dB cutoff frequency of the filter in the normalized frequency units
as a positive scalar less than or equal to 1
. You can change the
3-dB cutoff frequency you input through this port during simulation.
Dependencies
To enable this port, select the Specify 3-dB cutoff frequency from input port parameter.
Data Types: single
| double
Ap — Passband ripple in dB
positive scalar
Specify the passband ripple of the Chebyshev Type I filter as a positive scalar in dB. You can change the passband ripple you input through this port during simulation.
Dependencies
To enable this port:
Set the Design method parameter to
Chebyshev Type I
.Select the Specify the passband ripple from input port parameter.
Data Types: single
| double
Ast — Stopband attenuation in dB
positive scalar
Specify the stopband attenuation of the Chebyshev Type II filter as a positive scalar in dB. You can change the stopband attenuation you input through this port during simulation.
Dependencies
To enable this port:
Set the Design method parameter to
Chebyshev Type II
.Select the Specify the stopband attenuation from input port parameter.
Data Types: single
| double
Output
Num — Numerator coefficients
P-by-3 matrix
Numerator coefficients, returned as a P-by-3 matrix (SOS form), where P is the maximum number of filter sections.
This equation represents the SOS filter in the transfer function form.
where
b is a matrix of numerator coefficients.
a is a matrix of denominator coefficients that the block outputs at the Den output port.
k is the row index.
P equals
ceil
(Nmax/2), where
Nmax is the value of the
Filter maximum order parameter.
When the actual filter order N is less than the maximum filter
order Nmax, the last
ceil
(Nmax/2) −
ceil
(N/2) sections are trivial with
coefficients [b0,
b1,
b2] = [1, 0, 0].
When the actual filter order N is odd, the last nontrivial filter section has the coefficients [b0, b1, 0] = [1, 1, 0].
The data type of this port depends on the value of the Output data type parameter.
Data Types: single
| double
Den — Denominator coefficients
P-by-3 matrix
Denominator coefficients, returned as a P-by-3 matrix (SOS form), where P is the maximum number of filter sections.
This equation represents the SOS filter in the transfer function form.
where
a is a matrix of denominator coefficients and the leading denominator coefficient a0 is always 1.
b is a matrix of numerator coefficients that the block outputs at the Num port.
k is the row index.
P equals
ceil
(Nmax/2), where
Nmax is the value of the
Filter maximum order parameter.
When the actual filter order N is less than the maximum filter
order Nmax, the last
ceil
(Nmax/2) −
ceil
(N/2) sections are trivial with
coefficients [a0,
a1,
a2] = [1, 0, 0].
When the actual filter order N is odd, the last nontrivial filter section has the coefficients [1, a1, 0] = [1, 1, 0].
The data type of this port depends on the value of the Output data type parameter.
Data Types: single
| double
g — Scale values for each second-order section
vector
Scale values for each second-order section, returned as a vector with
P + 1 elements, where P is the maximum number
of filter sections and equals
ceil
(Nmax/2), where
Nmax is the value of the
Filter maximum order parameter.
Tunable: Yes
Dependencies
To enable this port, select the Design has scale values parameter.
Data Types: single
| double
Parameters
Design method — Filter design method
Butterworth
(default) | Chebyshev Type I
| Chebyshev Type II
Specify the filter design method as one of these:
Butterworth
Chebyshev Type I
Chebyshev Type II
Specify filter order from input port — Flag to specify filter order from input port
off
(default) | on
Select this parameter to specify the filter order from the input port N. When you clear this parameter, you can specify the filter order in the block dialog box using the Filter order parameter.
Filter order — Filter order
6
(default) | positive integer
Specify the filter order as a positive integer less than or equal to the value of the Filter maximum order parameter.
Tunable: Yes
Dependencies
To enable this parameter, clear the Specify filter order from input port parameter.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Filter maximum order — Maximum order of filter
10
(default) | positive integer
Specify the maximum order of the filter as a positive integer. The value you specify in the Filter order parameter must be less than or equal to the value you specify in the Filter maximum order parameter.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Design has scale values — Specify if filter has scale values for each section
off
(default) | on
Specify if the filter has scale values for each section. When you select this parameter, the block outputs the scale values through the g output port.
Specify 3-dB cutoff frequency from input port — Flag to specify 3-dB cutoff frequency from input port
off
(default) | on
Select this parameter to specify the 3-dB filter cutoff frequency from the input port Fc. When you clear this parameter, you can specify the cutoff frequency in the block dialog box using the 3-dB cutoff frequency parameter.
3-dB cutoff frequency — 3-dB cutoff frequency
0.25
(default) | positive scalar ≤ 1
Specify the 3-dB cutoff frequency of the filter in the normalized frequency units as
a positive scalar less than or equal to 1
.
Tunable: Yes
Dependencies
To enable this parameter, clear the Specify 3-dB cutoff frequency from input port parameter.
Data Types: single
| double
Specify the passband ripple from input port — Flag to specify passband ripple from input port
off
(default) | on
Select this parameter to specify the passband ripple from the input port Ap. When you clear this parameter, you can specify the passband ripple in the block dialog box using the Passband ripple (dB) parameter.
Dependencies
To enable this parameter, set the Design method parameter to
Chebyshev Type I
.
Passband ripple (dB) — Passband ripple in dB
1
(default) | positive scalar
Specify the passband ripple of the Chebyshev Type I filter as a positive scalar in dB.
Tunable: Yes
Dependencies
To enable this parameter:
Set the Design method parameter to
Chebyshev Type I
.Clear the Specify the passband ripple from input port parameter.
Data Types: single
| double
Specify the stopband attenuation from input port — Flag to specify stopband attenuation from input port
off
(default) | on
Select this parameter to specify the stopband attenuation from the input port Ast. When you clear this parameter, you can specify the stopband attenuation in the block dialog box using the Stopband attenuation (dB) parameter.
Dependencies
To enable this parameter, set the Design method parameter to
Chebyshev Type II
.
Stopband attenuation (dB) — Stopband attenuation in dB
60
(default) | positive scalar
Specify the stopband attenuation of the Chebyshev Type II filter as a positive scalar in dB.
Tunable: Yes
Dependencies
To enable this parameter:
Set the Design method parameter to
Chebyshev Type II
.Clear the Specify the stopband attenuation from input port parameter.
Data Types: single
| double
Sample time — Sample time in seconds
-1
(default) | positive scalar | Inf
Specify the sample time as -1
(inherited), Inf
(constant sample time), or a positive scalar. This parameter determines when the block
produces the output and updates its internal state during simulation. For more details,
see What Is Sample Time? (Simulink).
Data Types: single
| double
Output data type — Data type of filter coefficients
double
(default) | single
Specify the data type of the filter coefficients that the block outputs through the
Num and Den ports. You can set the data type
to double
or single
.
Simulate using — Type of simulation to run
Code generation
(default) | Interpreted execution
Specify the type of simulation to run as one of the following:
Code generation
–– Simulate model using generated C code. The first time you run a simulation, Simulink® generates C code for the block. Simulink reuses the C code in subsequent simulations as long as the model does not change. This option requires additional startup time but subsequent simulations are faster compared toInterpreted execution
.Interpreted execution
–– Simulate model using the MATLAB® interpreter. This option shortens startup time but subsequent simulations are slower compared toCode generation
.
Block Characteristics
Data Types |
|
Direct Feedthrough |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
Zero-Crossing Detection |
|
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
When you generate code from this block, you can tune the filter design specifications in the generated code.
Version History
Introduced in R2023b
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)