designLowpassIIR
Syntax
Description
[
designs a lowpass IIR filter with the filter order of 10 and half-power frequency of
0.25. When you use this syntax, the function designs the IIR filter using the
B
,A
] = designLowpassIIR"default"
window design method and does not compute the scale
values.
B
and A
are the second-order section
matrices of the size P-by-3, where P is the number
of filter sections.
The System object™ argument is false
by default. To implement the filter,
assign the filter coefficients to a dsp.SOSFilter
object.
[
specifies options using one or more name-value arguments.B
,A
] = designLowpassIIR(Name=Value
)
For example, [
designs a lowpass IIR filter with the filter order of 30 and half-power frequency of 0.4
by using the Chebyshev Type I window design method.B
,A
] =
designLowpassIIR
(FilterOrder
=30,HalfPowerFrequency
=0.4,DesignMethod
="cheby1")
When you specify only a partial list of filter parameters, the function designs the filter by setting the other design parameters to their default values.
When you specify any of the numeric input arguments in single precision, the function
designs the filter coefficients in single precision. Alternatively, you can use the Datatype
and
like
arguments to control the coefficients data
type. (since R2024b)
The function supports three design methods. Each design method supports a specific
set of design combinations. For more information, see DesignMethod
.
[
also returns scale values when you specify the B
,A
,SV
] = designLowpassIIR(Name=Value
)HasScaleValues
argument. SV
is a vector of 1s when you set the argument to
false
and a vector of scale values when you set it to
true
.
designs a lowpass IIR filter and implements a filtObj
= designLowpassIIR(Name=Value
)dsp.SOSFilter
System object.
This syntax applies when you set the SystemObject
argument to
true
.
Examples
Design and Implement Lowpass IIR Filter with Tunable 3-dB Cutoff Frequency
Create a dsp.SOSFilter
object, and set the CoefficientSource
property to 'Input port'
so that you can vary the coefficients of the SOS filter coefficients through the input port during simulation.
sosFilt = dsp.SOSFilter(CoefficientSource="Input port")
sosFilt = dsp.SOSFilter with properties: Structure: 'Direct form II transposed' CoefficientSource: 'Input port' HasScaleValues: false Use get to show all properties
Create a spectrumAnalyzer
object to visualize the spectra of the input and output signals.
spectrumScope = spectrumAnalyzer(SampleRate=96000,PlotAsTwoSidedSpectrum=false,... ChannelNames=["Input Signal","Filtered Signal"]);
Create a dsp.DynamicFilterVisualizer
object to visualize the magnitude response of the varying filter.
filterViz = dsp.DynamicFilterVisualizer(NormalizedFrequency=true);
Stream in random data and filter the signal using the dsp.SOSFilter
object. Use the designLowpassIIR
function to design the filter coefficients. By default, this function returns a P-by-3 matrix of numerator coefficients and a P-by-3 matrix of denominator coefficients. Assign these coefficients to the dsp.SOSFilter
object.
Vary the 3-dB cutoff frequency of the filter during simulation. The designLowpassIIR
function redesigns the coefficients based on the updated filter specifications. Pass these updated coefficients to the SOS filter. Visualize the spectra of the input and filtered signals using the spectrum analyzer.
F3dB = 0.5; for idx = 1:500 [b,a] = designLowpassIIR(FilterOrder=30,HalfPowerFrequency=F3dB,DesignMethod="butter"); x = randn(1024,1); y = sosFilt(x,b,a); spectrumScope(x,y); filterViz(b,a); F3dB = F3dB + 0.0005; end
Design and Implement Lowpass IIR Filter Object
Design and implement a lowpass IIR filter object using the designLowpassIIR
function. The function returns a dsp.SOSFilter
object when you set the SystemObject
argument to true
. To design the filter in single-precision, use the Datatype
or like
argument. Alternatively, you can specify any of the numerical arguments in single-precision.
sosFilt = designLowpassIIR(FilterOrder=30,HalfPowerFrequency=0.5,DesignMethod="butter",... Datatype="single",SystemObject=true)
sosFilt = dsp.SOSFilter with properties: Structure: 'Direct form II transposed' CoefficientSource: 'Property' Numerator: [15x3 single] Denominator: [15x3 single] HasScaleValues: false Use get to show all properties
Create a dsp.DynamicFilterVisualizer
object to visualize the magnitude response of the filter.
filterViz = dsp.DynamicFilterVisualizer(NormalizedFrequency=true,YLimits=[-80 20]); filterViz(sosFilt)
Create a spectrumAnalyzer
object to visualize the spectra of the input and output signals.
spectrumScope = spectrumAnalyzer(SampleRate=44100,PlotAsTwoSidedSpectrum=false,... ChannelNames=["Input Signal","Filtered Signal"]);
Stream in random data and filter the signal using the dsp.SOSFilter
object. Visualize the spectra of the input and filtered signals using the spectrum analyzer.
for idx = 1:50 x = randn(1024,1); y = sosFilt(x); spectrumScope(x,y); end
Input Arguments
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example:
designLowpassIIR(FilterOrder=30,HalfPowerFrequency=0.5,SystemObject=true)
FilterOrder
— Order of lowpass IIR filter
10
(default) | nonnegative integer
Order of the lowpass IIR filter, N, specified as a nonnegative integer.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
HalfPowerFrequency
— 3-dB cutoff frequency of lowpass IIR filter
0.25
(default) | scalar in the range (0
,1
]
3-dB cutoff frequency of the lowpass IIR filter, F3dB,
specified as a normalized scalar in the range
(0
,1
].
Data Types: single
| double
DesignMethod
— Window design method
"default"
(default) |
"butter"
| "cheby1"
|
"cheby2"
Window design method, specified as one of these options:
"default"
–– The function designs the lowpass IIR filter using one of these methods:Chebyshev Type I method when you specify the
PassBandRipple
(APASS) argumentChebyshev Type II method when you specify the
StopbandAttenuation
(ASTOP) argumentButterworth method when you do not specify the
PassBandRipple
(APASS) and theStopbandAttenuation
(ASTOP) arguments
"butter"
–– The function designs the lowpass IIR filter using the Butterworth design method. You can use this method when you specify one of these design specification combinations:FilterOrder
(N)FilterOrder
(N) andHalfPowerFrequency
(F3dB)
"cheby1"
–– The function designs the lowpass IIR filter using the Chebyshev Type I design method. You can use this method when you specify theFilterOrder
(N),HalfPowerFrequency
(F3dB), and thePassBandRipple
(APASS) arguments."cheby2"
–– The function designs the lowpass IIR filter using the Chebyshev Type II design method. You can use this method when you specify theFilterOrder
(N),HalfPowerFrequency
(F3dB), and theStopbandAttenuation
(ASTOP) arguments.
Data Types: char
| string
PassbandRipple
— Passband ripple of IIR filter
1
(default) | positive scalar
Passband ripple of the IIR filter, APASS, specified as a positive scalar.
To specify the PassbandRipple
argument, set
DesignMethod
to "default"
or
"cheby1"
.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandAttenuation
— Stopband attenuation of IIR filter
60
(default) | positive scalar
Stopband attenuation of the IIR filter, ASTOP, specified as a positive scalar.
To specify the StopbandAttenuation
argument, set
DesignMethod
to "default"
or
"cheby2"
.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
HasScaleValues
— Option to compute scale values
false
(default) | true
Option to compute the scale values, SV
, specified as
true
or false
.
Data Types: logical
Datatype
— Data type of filter coefficients by type name
"double"
(default) | "single"
Since R2024b
Data type of the filter coefficients, specified by type name as
"double"
or
"single"
.
You can use the Dataype
or the
like
argument to specify the
data type of the filter coefficients, but you cannot use both
arguments at the same time.
If you specify the data type of the filter coefficients using this argument, the function ignores the data types of the other numeric arguments.
Data Types: char
| string
like
— Data type of filter coefficients by prototype
real floating-point value
Since R2024b
Data type of the filter coefficients, specified as a prototype of a real floating-point value.
You can use the Dataype
or the
like
argument to specify the data type of filter
coefficients, but you cannot use both arguments at the same time.
If you specify the data type of the filter coefficients using this argument, the function ignores the data types of the other numeric arguments.
Example: B =
designLowpassIIR(FilterOrder=N,HalfPowerFrequency=F3dB,like=single(N))
Example: N = single(110); B =
designLowpassIIR(FilterOrder=N,HalfPowerFrequency=F3dB,like=N)
Data Types: single
| double
SystemObject
— Option to create System object
false
(default) |
true
Option to create System object, specified as one of these:
false
–– The function returns second-order section matrices.true
–– The function returns adsp.SOSFilter
object.
Data Types: logical
Verbose
— Option to print function call in MATLAB®
false
(default) | true
Option to print the entire function call in MATLAB, specified as one of these:
false
–– The function does not print the function call.true
–– The function prints the entire function call including the default values of theName=Value
arguments that you did not specify when calling the function.Use this argument to view all the values used by the function to design and implement the filter.
Data Types: logical
Output Arguments
B
— Numerator coefficients in second-order section form
P-by-3 matrix
Numerator coefficients of the lowpass IIR filter in the second-order section
form, returned as a P-by-3 matrix, where P
is the number of filter sections and equals
ceil
(FilterOrder
/2).
If you specify single-precision values in any of the input arguments, the function designs single-precision filter coefficients. (since R2024a)
If you specify the data type using the
Datatype
or the like
argument, the
function ignores the data types of the other numeric arguments. (since R2024b)
Data Types: single
| double
A
— Denominator coefficients in second-order section form
P-by-3 matrix
Denominator coefficients of the lowpass IIR filter in the second-order section
form, returned as a P-by-3 matrix, where P
is the number of filter sections and equals
ceil
(FilterOrder
/2).
The leading denominator coefficient is always 1.
If you specify single-precision values in any of the input arguments, the function designs single-precision filter coefficients. (since R2024a)
If you specify the data type using the
Datatype
or the like
argument, the
function ignores the data types of the other numeric arguments. (since R2024b)
Data Types: single
| double
SV
— Scale values for each section
(P+1)-by-1 vector
Scale values for each section, returned as a (P+1)-by-1
vector, where P is the number of filter sections and equals
ceil
(FilterOrder
/2).
If you set HasScaleValues
to false
,
SV
is a vector of 1s of size
(P+1)-by-1.
If you specify single-precision values in any of the input arguments, the function outputs the scale values in single precision. (since R2024a)
If you specify the data type using the
Datatype
or the like
argument, the
function ignores the data types of the other numeric arguments. (since R2024b)
Data Types: single
| double
filtObj
— Lowpass IIR filter object
dsp.SOSFilter
object
dsp.SOSFilter
Lowpass IIR filter object, returned as a dsp.SOSFilter
System object.
The function returns this output when you set the
SystemObject
argument to true
.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
When you set the SystemObject
argument to
false
, the function supports code generation with no
limitations.
When you set the SystemObject
argument to
true
, the inputs to the function must be constants when generating
code.
This function supports strict single precision
in generated code. If any of the input arguments are in single precision, or you use the Datatype
and
like
arguments to specify single-precision (since R2024b), the code
you generate uses strictly single-precision arithmetic. (since R2024a)
Version History
Introduced in R2023bR2024b: Specify data type of filter coefficients explicitly
You can now specify the data type of filter coefficients explicitly using the
Datatype
and like
arguments.
R2024a: Support for strict single precision
When you specify single-precision values in any of the input arguments, the function designs filter coefficients and scale values in single precision both in simulation and in generated code.
See Also
Functions
Objects
Blocks
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)