Bandstop filter design specification object
The fdesign.bandstop
function returns a
bandstop
filter design specification object that contains the
specifications for a filter, such as passband frequency, stopband frequency, passband
ripple, and filter order. Then, use the design
function to design the filter from the filter design
specifications object.
For more control options, see Filter Design Procedure. For a complete workflow, see Design a Filter in Fdesign — Process Overview.
constructs a bandstop filter design specifications object with the following default
values: bandstopSpecs
= fdesign.bandstop
First passband frequency set to 0.35.
First stopband frequency set to 0.45.
Second stopband frequency set to 0.55.
Second passband frequency set to 0.65.
First passband ripple 1 dB.
Stopband attenuation set to 60 dB.
Second passband ripple set to 1 dB.
constructs a bandstop filter design specifications object with a particular filter
order, passband frequencies, stopband frequencies, and other specification options.
Indicate the options you want to specify in the expression
bandstopSpecs
= fdesign.bandstop(spec
,value1,...,valueN
)spec
. After the expression, specify a value for each option. If
you do not specify values after the spec
argument, the function
assumes the default values.
provides the sample rate of the signal to be filtered, in Hz.
bandstopSpecs
= fdesign.bandstop(___,Fs
)Fs
must be specified as a scalar trailing the other
numerical values provided. In this case, all frequencies in the specifications are
in Hz as well.
The design specification
fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',.4,.5,.6,.7,1,80,.5)
designs the same filter as
fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',1600,2000,2400,2800,1,80,0.5,8000)
provides the units for any magnitude specification given.
bandstopSpecs
= fdesign.bandstop(___,magunits
)magunits
can be one of the following:
'linear'
, 'dB'
, or
'squared'
. If this argument is omitted,
'dB'
is assumed. The magnitude specifications are always
converted and stored in dB regardless of how they were specified. If
Fs
is provided, magunits
must follow
Fs
in the input argument list.
Design a constrainedband FIR equiripple filter of order 60 with a stopband of [12.8 22.4] kHz. Both passband ripple values are constrained to 1 dB. The sample rate is 64 kHz.
Create a bandstop
filter design specification object using the fdesign.bandstop
function and specify these design parameters.
bandstopSpecs = fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',60,9.6e3,12.8e3,22.4e3,25.6e3,64000);
Constrain the two passbands with a passband ripple of 1 dB.
bandstopSpecs.Passband1Constrained = true; bandstopSpecs.Apass1 = 1; bandstopSpecs.Passband2Constrained = true; bandstopSpecs.Apass2 = 1;
Design the bandstop filter using the design
function. The resulting filter is a dsp.Filter
System object™. For details on how to apply this filter on streaming data, refer to dsp.FIRFilter
.
bandstopFilt = design(bandstopSpecs,'Systemobject',true)
bandstopFilt = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [1x61 double] InitialConditions: 0 Show all properties
Visualize the frequency response of the designed filter using fvtool
.
fvtool(bandstopFilt)
Measure the frequency response characteristics of the filter using measure
.
measure(bandstopFilt)
ans = Sample Rate : 64 kHz First Passband Edge : 9.6 kHz First 3dB Point : 10.5255 kHz First 6dB Point : 10.9058 kHz First Stopband Edge : 12.8 kHz Second Stopband Edge : 22.4 kHz Second 6dB Point : 24.2866 kHz Second 3dB Point : 24.6685 kHz Second Passband Edge : 25.6 kHz First Passband Ripple : 0.11754 dB Stopband Atten. : 69.3934 dB Second Passband Ripple : 0.11761 dB First Transition Width : 3.2 kHz Second Transition Width : 3.2 kHz
Design a minimum order elliptic bandstop filter. The filter design procedure is:
Specify the filter design specifications using a fdesign
function.
Pick a design method provided by the designmethods
function.
To determine the available design options to choose from, use the designoptions
function.
Design the filter using the design
function.
Construct fdesign.bandstop
in the default state and input the design specifications to the function.
bandstopSpecs = fdesign.bandstop(.3,.4,.6,.7,.5,60,1)
bandstopSpecs = bandstop with properties: Response: 'Bandstop' Specification: 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2' Description: {7x1 cell} NormalizedFrequency: 1 Fpass1: 0.3000 Fstop1: 0.4000 Fstop2: 0.6000 Fpass2: 0.7000 Apass1: 0.5000 Astop: 60 Apass2: 1
Determine the available designmethods using the designmethods
function. To design an elliptic filter, pick ellip
.
designmethods(bandstopSpecs,'Systemobject',true)
Design Methods that support System objects for class fdesign.bandstop (Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2): butter cheby1 cheby2 ellip equiripple kaiserwin
When designing the filter, you can specify additional design options. View a list of options using the designoptions
function. The function also shows the default design options the filter uses.
designoptions(bandstopSpecs,'ellip')
ans = struct with fields:
FilterStructure: {1x6 cell}
SOSScaleNorm: 'ustring'
SOSScaleOpts: 'fdopts.sosscaling'
MatchExactly: {'passband' 'stopband' 'both'}
SystemObject: 'bool'
DefaultFilterStructure: 'df2sos'
DefaultMatchExactly: 'both'
DefaultSOSScaleNorm: ''
DefaultSOSScaleOpts: [1x1 fdopts.sosscaling]
DefaultSystemObject: 0
Use the design
function to design the filter. Pass 'ellip'
and the specifications given by the variable 'bandstopSpecs'
, as input arguments.
bsFilter = design(bandstopSpecs,'ellip','Systemobject',true)
bsFilter = dsp.BiquadFilter with properties: Structure: 'Direct form II' SOSMatrixSource: 'Property' SOSMatrix: [5x6 double] ScaleValues: [6x1 double] InitialConditions: 0 OptimizeUnityScaleValues: true Show all properties
Visualize the frequency response of the designed filter.
fvtool(bsFilter)
Construct a bandstop filter to reject the discrete frequency band between 3π/8 and 5π/8 rad/sample. With a sampling frequency of 48 kHz, these values translate to a frequency range of [9 15] kHz. Apply the filter to a discretetime signal consisting of the superposition of three discretetime sinusoids.
The filter is designed by first creating a bandstop filter design specifications object, and then passing the object as an input to the design
function.
Design Bandstop Filter
Create a bandstop filter design specifications object using fdesign.bandstop
.
bandstopSpecs = fdesign.bandstop(1/4,3/8,5/8,6/8,1,60,1)
bandstopSpecs = bandstop with properties: Response: 'Bandstop' Specification: 'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2' Description: {7x1 cell} NormalizedFrequency: 1 Fpass1: 0.2500 Fstop1: 0.3750 Fstop2: 0.6250 Fpass2: 0.7500 Apass1: 1 Astop: 60 Apass2: 1
List the available design methods for this object.
designmethods(bandstopSpecs)
Design Methods for class fdesign.bandstop (Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2): butter cheby1 cheby2 ellip equiripple kaiserwin
To design an equiripple filter, pick 'equiripple'
.
bsFilter = design(bandstopSpecs,'equiripple','Systemobject',true)
bsFilter = dsp.FIRFilter with properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [1x37 double] InitialConditions: 0 Show all properties
Visualize the frequency response of the designed filter.
fvtool(bsFilter,'Fs',48000)
Create Sinusoidal Signal
Create a signal that is a sum of three sinusoids with frequencies at 1 kHz, 12 kHz, and 16 kHz. Initialize Spectrum Analyzer to view the original signal and the filtered signal.
Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3,'SamplesPerFrame',4000); Sine2 = dsp.SineWave('Frequency',12e3,'SampleRate',44.1e3,'SamplesPerFrame',4000); Sine3 = dsp.SineWave('Frequency',16e3,'SampleRate',44.1e3,'SamplesPerFrame',4000); SpecAna = dsp.SpectrumAnalyzer('PlotAsTwoSidedSpectrum',false, ... 'SampleRate',Sine1.SampleRate, ... 'NumInputPorts',2,... 'ShowLegend',true, ... 'YLimits',[240,45]); SpecAna.ChannelNames = {'Original noisy signal','Filtered signal'};
Filter Sinusoidal Signal
Filter the sinusoidal signal using the bandstop filter that has been designed. View the original signal and the filtered signal in the Spectrum Analyzer. The tone at 1 kHz is unaffected. The tone at 12 kHz is filtered out and attenuated, and the tone at 16 kHz is mildly attenuated because it appears in the transition band of the filter.
for i = 1 : 1000 x = Sine1()+Sine2()+Sine3(); y = bsFilter(x); SpecAna(x,y); end release(SpecAna)
spec
— Specification'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
(default)  'N,F3dB1,F3dB2'
 'N,F3dB1,F3dB2,Ap'
 ...Specification expression, specified as one of these character vectors:
'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
(default)
'N,F3dB1,F3dB2'
'N,F3dB1,F3dB2,Ap'
*
'N,F3dB1,F3dB2,Ap,Ast'
*
'N,F3dB1,F3dB2,Ast'
*
'N,F3dB1,F3dB2,BWp'
*
'N,F3dB1,F3dB2,BWst'
*
'N,Fc1,Fc2'
'N,Fc1,Fc2,Ap1,Ast,Ap2'
'N,Fp1,Fp2,Ap'
'N,Fp1,Fp2,Ap,Ast'
'N,Fp1,Fst1,Fst2,Fp2'
'N,Fp1,Fst1,Fst2,Fp2,C'
*
'N,Fp1,Fst1,Fst2,Fp2,Ap'
*
'N,Fst1,Fst2,Ast'
'Nb,Na,Fp1,Fst1,Fst2,Fp2'
*
This table describes each option that can appear in the expression.
Specification option  Description 

Ap  Amount of ripple allowed in passband, specified as
Apass in dB. 
Ap1  Amount of ripple allowed in the first passband, specified
as Apass1 in dB. 
Ap2  Amount of ripple allowed in the second passband,
specified as Apass2 in dB. 
Ast  Stopband attenuation (dB), specified using
Astop . 
BWp  Bandwidth of the filter passband, specified as
BWpass in normalized frequency
units. 
BWst  Bandwidth of the filter stopband, specified as
BWstop in normalized frequency
units. 
F3dB1  Frequency of the 3 dB point below the passband value for the first cutoff, specified in normalized frequency units. Applies to IIR filters. 
F3dB2  Frequency of the 3 dB point below the passband value for the second cutoff, specified in normalized frequency units. Applies to IIR filters. 
Fc1  First cutoff frequency (normalized frequency units),
specified using Fcutoff1 . Applies to
FIR filters. 
Fc2  Second cutoff frequency (normalized frequency units),
specified using Fcutoff1 . Applies to
FIR filters. 
Fp1  Frequency at the start of the pass band, specified as
Fpass1 in normalized frequency
units. 
Fp2  Frequency at the end of the pass band, specified as
Fpass2 in normalized frequency
units. 
Fst1  Frequency at the end of the first stop band, specified as
Fstop1 in normalized frequency
units. 
Fst2  Frequency at the start of the second stop band, specified
as Fstop2 in normalized frequency
units. 
N  Filter order for FIR filters. Or both the numerator and
denominator orders for IIR filters when
Na and Nb are not
provided. Specified using
FilterOrder . 
Nb  Numerator order for IIR filters, specified using the
DenOrder property. 
Na  Denominator order for IIR filters, specified using the
NumOrder property. 
C  Constrained band flag. This enables you to specify passband ripple or stopband attenuation for fixedorder designs in one or two of the three bands. In
the specification

Graphically, the filter specifications look similar to those shown in the following figure.
Regions between specification values like Fp1
and
Fst1
are transition regions where the filter response
is not explicitly defined.
The design methods available for designing the filter depend on the
specification expression. You can obtain these methods using the designmethods
function. The
table lists each specification expression supported by
fdesign.bandstop
and the corresponding design
methods available.
Specification expression  Supported design methods 

'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'  butter , cheby1 ,
cheby2 , ellip ,
equiripple ,
kaiserwin 
'N,F3dB1,F3dB2'  butter 
'N,F3dB1,F3dB2,Ap'  cheby1 
'N,F3dB1,F3dB2,Ap,Ast'  ellip 
'N,F3dB1,F3dB2,Ast'  cheby2 ,
ellip 
'N,F3dB1,F3dB2,BWp'  cheby1 
'N,F3dB1,F3dB2,BWst'  cheby2 
'N,Fc1,Fc2'  window 
'N,Fc1,Fc2,Ap1,Ast,Ap2'  fircls 
'N,Fp1,Fp2,Ap'  cheby1 
'N,Fp1,Fp2,Ap,Ast'  ellip 
'N,Fp1,Fst1,Fst2,Fp2'  iirlpnorm ,
equiripple ,
firls 
'N,Fp1,Fst1,Fst2,Fp2,C'  equiripple 
'N,Fp1,Fst1,Fst2,Fp2,Ap'  ellip 
'N,Fst1,Fst2,Ast'  cheby2 
'Nb,Na,Fp1,Fst1,Fst2,Fp2'  iirlpnorm 
To design the filter, call the design
function with one of
these design methods as an input. You can choose the type of filter response
by passing 'FIR'
or 'IIR'
to the
design
function. For more details, see design
. Enter
help(bandstopSpecs,'method')
at the MATLAB^{®} command line to obtain detailed help on the design options for
a given design method, 'method'
.
For more details on the procedure, see Filter Design Procedure. For an example, see Design Notch Filter.
value1,...,valueN
— Specification valuesSpecification values, specified as a commaseparated list of values.
Specify a value for each option in spec
in the same
order that the options appear in the expression.
Example: bandstopSpecs =
fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',n,fp1,fst1,fst2,fp2,c)
The arguments below describe more details for each option in the expression.
n
— Filter orderFilter order for FIR filters, specified as a positive integer.
In the case of IIR filter design, if nb
and
na
are not provided, this value is
interpreted as both the numerator order and the denominator
order.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
nb
— Numerator order for IIR filtersNumerator order for IIR filters, specified as a nonnegative integer.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
na
— Denominator order for IIR filtersDenominator order for IIR filters, specified as a positive integer.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
c
— Constrained band flagThis enables you to specify passband ripple or stopband attenuation for fixedorder designs in one or two of the three bands.
In the specification
'N,Fp1,Fst1,Fst2,Fp2,C'
, you cannot
specify constraints for all three bands (two passbands and one
stopband) simultaneously. You can specify constraints in any one
or two bands.
Consider the following bandstop design specification where both the passbands are constrained to the default value, 1 dB.
Example: spec =
fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,C',10,0.35,0.45,0.55,0.65);
spec.Passband1Constrained=true;
spec.Passband2Constrained=true;
ap
— Passband ripplePassband ripple, specified as a positive scalar in dB. If
magunits
is 'linear'
or 'squared'
, the passband ripple is
converted and stored in dB by the function regardless of how it
has been specified.
The specified ap
value applies to both
the first passband and the second passband.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
ap1
— First passband ripple in dBAmount of ripple allowed in the first passband, specified as a
positive scalar in dB. If magunits
is
'linear'
or 'squared'
,
the first passband ripple is converted and stored in dB by the
function regardless of how it has been specified.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
ap2
— Second passband ripple in dBAmount of ripple allowed in the second passband, specified as
a positive scalar in dB. If magunits
is
'linear'
or 'squared'
,
the second passband ripple is converted and stored in dB by the
function regardless of how it has been specified.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
ast
— Stopband attenuation in dBStopband attenuation, specified as a positive scalar in dB. If
magunits
is 'linear'
or 'squared'
, the stopband attenuation is
converted and stored in dB by the function regardless of how it
has been specified.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
bwp
— Passband frequency widthBandwidth of the filter passband in normalized frequency units, specified as a positive scalar.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
F3dB1
— First 3 dB frequencyFirst 3 dB frequency, specified as positive scalar in normalized frequency units.
This is the frequency of the 3 dB point below the passband value for the first cutoff. Applies to IIR filters only.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
F3dB2
— Second 3 dB frequencySecond 3 dB frequency, specified as positive scalar in normalized frequency units.
This is the frequency of the 3 dB point below the passband value for the second cutoff. Applies to IIR filters only.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
fc1
— First cutoff frequencyFirst cutoff frequency, specified as positive scalar in normalized frequency units.
Applies to FIR filters only.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
fc2
— Second cutoff frequencySecond cutoff frequency, specified as positive scalar in normalized frequency units.
Applies to FIR filters only.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
fst1
— First stopband frequencyFirst stopband frequency, specified as positive scalar in normalized frequency units.
This is the frequency at the start of the stopband.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
fst2
— Second stopband frequencySecond stopband frequency, specified as positive scalar in normalized frequency units.
This is the frequency at the end of the stopband.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
fp1
— First passband frequencyFirst passband frequency, specified as positive scalar in normalized frequency units.
This is the frequency at the end of the first passband.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
fp2
— Second passband frequencySecond passband frequency, specified as positive scalar in normalized frequency units.
This is the frequency at the start of the second passband.
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
Fs
— Sample rateSample rate of the signal to be filtered, specified as a scalar in Hz.
Specify the sample rate as a scalar trailing the other numerical values
provided. When Fs
is provided, Fs
is assumed to be in Hz, as are all other frequency values provided. Note
that you do not have to change the specification string.
The following design has the specification string set to
'Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2'
, and sample rate set
to 8000 Hz.
bandstopSpecs =
fdesign.bandstop('Fp1,Fst1,Fst2,Fp2,Ap1,Ast,Ap2',1600,2000,2400,2800,1,80,.5,8000);
filt = design(bandstopSpecs,'Systemobject',true);
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
magunits
— Magnitude units'dB'
(default)  'linear'
 'squared'
Magnitude specification units, specified as 'dB'
,
'linear'
, or 'squared'
. If this
argument is omitted, 'dB'
is assumed. Note that the
magnitude specifications are always converted and stored in dB regardless of
how they were specified. If Fs
is one of the input
arguments, magunits
must be specified after
Fs
in the input argument list.
bandstopSpecs
— Bandstop filter design specification objectbandstop
objectBandstop filter design specification object, returned as a
bandstop
object. The fields of the object depend on the
spec
input character vector.
Consider an example where the spec
argument is set to
'N,Fc1,Fc2'
, and the corresponding values are set to
10
, 0.6
, and
0.8
, respectively. The bandstop
filter design specification object is populated with the following fields:
fdesign
 fdesign.bandpass
 fdesign.highpass
 fdesign.lowpass
You have a modified version of this example. Do you want to open this example with your edits?
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.
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.