Filter Analyzer
Description
The Filter Analyzer app is an interactive tool for visualizing, analyzing, and comparing digital filters. Using the app, you can
Import filter objects or filter coefficients. For more information, see
Import Filter
.View, analyze, and compare responses of multiple digital filters. For more information, see
Analysis
.View a list of filters in the Filters table and the details for each filter in the Filter Information table.
Plot a new filter analysis plot in a separate display window.
Specify filter sample rate and analysis sample rate separately.
Save the state of the current session, including filters, displays, and analysis options, for use in a future session of the app.
You can use the filterAnalyzer
commandline interface to add, remove, and update filters, displays, and analysis
options.
Open the Filter Analyzer App
MATLAB^{®} Toolstrip: On the Apps tab, under Signal Processing and Communications, click the app icon.
MATLAB command prompt: Enter
filterAnalyzer
.
Examples
Analyze Filters
Design sixthorder Chebyshev Type 1 lowpass and highpass filters with a normalized passband edge frequency of $0.4\pi $ rad/sample and 12 dB of passband ripple. Express the designs as cascades of fourthorder transfer functions. Use Filter Analyzer to display the magnitude and phase responses of the filters.
[zl,pl,kl] = cheby1(6,12,0.4); [bl,al] = zp2ctf(zl,pl,kl,SectionOrder=4); [zh,ph,kh] = cheby1(6,12,0.4,"high"); [bh,ah] = zp2ctf(zh,ph,kh,SectionOrder=4); filterAnalyzer(bl,al,bh,ah,OverlayAnalysis="phase")
Design a 30thorder FIR bandpass filter to filter signals sampled at 2 kHz. Specify a stopband ranging from 250 Hz to 400 Hz. Use Filter Analyzer to display the poles and zeros of the filter transfer function.
iirbp = designfilt("bandpassfir",FilterOrder=30, ... CutoffFrequency1=250,CutoffFrequency2=400, ... SampleRate=2000); filterAnalyzer(iirbp,Analysis="polezero")
Analyze Elliptic and FIR Bandpass Filters
Design a tenthorder elliptic bandpass filter with 5 dB of passband ripple and 60 dB of stopband attenuation. Specify passband edge frequencies of $0.2\pi $ rad/sample and $0.45\pi $ rad/sample. Express the design as a cascade of fourthorder transfer functions.
[z,p,k] = ellip(5,5,60,[0.2 0.45]); [bb,aa] = zp2ctf(z,p,k,SectionOrder=4);
Design a finite impulse response bandpass filter with 5 dB of passband ripple and asymmetric stopbands for use with signals sampled at 2 kHz.
At lower frequencies, the stopband has 80 dB of attenuation and the transition region ranges from 500 Hz to 600 Hz.
At higher frequencies, the stopband has 40 dB of attenuation and the transition region ranges from 750 Hz to 900 Hz.
dfir = designfilt("bandpassfir", ... SampleRate=2e3,PassbandRipple=5, ... StopbandFrequency1=500,PassbandFrequency1=600, ... StopbandAttenuation1=80, ... PassbandFrequency2=750,StopbandFrequency2=900, ... StopbandAttenuation2=40);
Start a Filter Analyzer session to analyze the filters. Import the filters. On the Analyzer tab, click Import Filter.
To import the elliptic filter, select Filter Coefficients. Select
bb
as the Numerator andaa
as the Denominator. SpecifyEllip
for the Filter Name, and leave the Sample Rate asNormalized
. Click Import.To import the FIR filter, select Filter Objects, select
dfir
, and click Import and Close.
Alternatively, open Filter Analyzer by using the commandline interface. By default, the app displays magnitude responses. Only one of the filters has a sample rate, so the app displays the responses using normalized frequencies.
fa = filterAnalyzer(bb,aa,dfir,FilterNames=["ellip" "dfir"]);
Add a display and use it to plot the magnitude responses and the phase responses of the filters.
On the Analyzer tab, click New Display.
Expand the Analysis gallery so the Overlay Analysis section is visible, and click
Phase
.Add the filters by clicking the eye icons on the Filters table.
Alternatively, use the filterAnalysisOptions
object and the addDisplays
and showFilters
functions.
opts = filterAnalysisOptions(OverlayAnalysis="phase"); addDisplays(fa,AnalysisOptions=opts) showFilters(fa,true,FilterNames=["ellip" "dfir"])
Add another display and show the cumulative magnitude responses of the cascaded transfer functions that specify the elliptic filter.
Click New Display to add the display and click the eye icon for the elliptic filter.
On the Display Options tab, click CTF View ▼ and select Cumulative.
Alternatively, use the commandline interface.
addDisplays(fa,CTFAnalysisMode="cumulative") showFilters(fa,true,FilterNames="ellip")
Add one more display and show the filter specification mask for the FIR filter.
On the Analyzer tab, click New Display and click the eye icon for the FIR filter. The app displays the frequencies in units of Hz.
For a
digitalFilter
object, the app shows the specification mask by default. To remove the mask, on the Display Options tab, click Mask ▼ and clear Specification.
Alternatively, use the commandline interface.
addDisplays(fa)
showFilters(fa,true,FilterNames="dfir")
Related Examples
Parameters
Filters
— View and edit filter information
table
Use the Filters table to edit information about the filters under analysis.
Name — Doubleclick an entry in this column to edit the name of the filter. You can also rightclick the filter in the Filters table and select Rename.
Line — Click an entry in this column to edit the color used to display that filter response.
Eye — Click an entry in this column to add the corresponding filter to the current display or to remove it. You can also (since R2024b) drag filters from the Filters table onto any display for visualization.
Cursor — Click an entry in this column to show or remove data cursors for the corresponding filter. Pause on an entry in this column to select between showing one cursor and showing two.
Sample Rate — Click an entry in this column to edit the sample rate for the corresponding filter.
To duplicate a filter, rightclick it in the Filters table and select Duplicate.
To delete a filter from the app, rightclick it in the Filters table and select Delete.
Analyzer
— File, analysis, and analysis options
toolstrip tab
Import Filter
— Import filter from MATLAB workspace
toolstrip button
Click Import Filter to import the filter you want to analyze. Filter Analyzer supports these filter types.
Filter Coefficients
You can use Filter Analyzer to analyze filters specified as numerator and denominator coefficients. If you specify the coefficients as the Lrow matrices
$$B=\left[\begin{array}{cccc}{b}_{11}& {b}_{12}& \cdots & {b}_{1,m+1}\\ {b}_{21}& {b}_{22}& \cdots & {b}_{2,m+1}\\ \vdots & \vdots & \ddots & \vdots \\ {b}_{L1}& {b}_{L2}& \cdots & {b}_{L,m+1}\end{array}\right],\text{\hspace{1em}}A=\left[\begin{array}{cccc}{a}_{11}& {a}_{12}& \cdots & {a}_{1,n+1}\\ {a}_{21}& {a}_{22}& \cdots & {a}_{2,n+1}\\ \vdots & \vdots & \ddots & \vdots \\ {a}_{L1}& {a}_{L2}& \cdots & {a}_{L,n+1}\end{array}\right],$$
Filter Analyzer assumes you have specified the filter as a sequence of L cascaded transfer functions (CTF), such that the full transfer function of the filter is
$$H\left(z\right)=\frac{{b}_{11}+{b}_{12}{z}^{1}+\cdots +{b}_{1,m+1}{z}^{m}}{{a}_{11}+{a}_{12}{z}^{1}+\cdots +{a}_{1,n+1}{z}^{n}}\times \frac{{b}_{21}+{b}_{22}{z}^{1}+\cdots +{b}_{2,m+1}{z}^{m}}{{a}_{21}+{a}_{22}{z}^{1}+\cdots +{a}_{2,n+1}{z}^{n}}\times \cdots \times \frac{{b}_{L1}+{b}_{L2}{z}^{1}+\cdots +{b}_{L,m+1}{z}^{m}}{{a}_{L1}+{a}_{L2}{z}^{1}+\cdots +{a}_{L,n+1}{z}^{n}},$$
where m ≥ 0 is the numerator order of the filter and n ≥ 0 is the denominator order.
If L = 1, then B and A are row vectors that specify the transfer function of an IIR filter.
If you specify both B and A as column vectors, Filter Analyzer assumes they represent the transfer function of an IIR filter.
If B is a scalar, Filter Analyzer assumes you specified the filter as a cascade of allpole IIR filters with each section having a scaling gain equal to B.
If A is a scalar, Filter Analyzer assumes you specified the filter as a cascade of FIR filters with each section having a scaling gain equal to 1/A.
Note
Coefficients and Gain
If you have a scaling gain separate from the coefficient values, you can
enter it in Filter Analyzer using the Import Filters dialog box. At
the command line, you can specify the coefficients and gain as a cell array of
the form {B,A,g}
, where B and A are as
defined in the Filter Coefficients section.
The gain can be a scalar overall gain or a vector of section gains.
If the gain is a scalar, Filter Analyzer applies the value uniformly to all the cascade filter sections.
If the gain is a vector, it must have one more element than the number of filter sections in the cascade. Filter Analyzer applies a scale value to each of the filter sections and applies the last value uniformly to all the filter sections.
If you specify the coefficient matrices and gain vector as
$$B=\left[\begin{array}{cccc}{b}_{11}& {b}_{12}& \cdots & {b}_{1,m+1}\\ {b}_{21}& {b}_{22}& \cdots & {b}_{2,m+1}\\ \vdots & \vdots & \ddots & \vdots \\ {b}_{L1}& {b}_{L2}& \cdots & {b}_{L,m+1}\end{array}\right],\text{\hspace{1em}}A=\left[\begin{array}{cccc}{a}_{11}& {a}_{12}& \cdots & {a}_{1,n+1}\\ {a}_{21}& {a}_{22}& \cdots & {a}_{2,n+1}\\ \vdots & \vdots & \ddots & \vdots \\ {a}_{L1}& {a}_{L2}& \cdots & {a}_{L,n+1}\end{array}\right],\text{\hspace{1em}}g=\left[\begin{array}{ccccc}{g}_{1}& {g}_{2}& \cdots & {g}_{L}& {g}_{\text{S}}\end{array}\right],$$
Filter Analyzer uses the transfer function
$$H\left(z\right)={g}_{\text{S}}\left({g}_{1}\frac{{b}_{11}+{b}_{12}{z}^{1}+\cdots +{b}_{1,m+1}{z}^{m}}{{a}_{11}+{a}_{12}{z}^{1}+\cdots +{a}_{1,n+1}{z}^{n}}\times {g}_{2}\frac{{b}_{21}+{b}_{22}{z}^{1}+\cdots +{b}_{2,m+1}{z}^{m}}{{a}_{21}+{a}_{22}{z}^{1}+\cdots +{a}_{2,n+1}{z}^{n}}\times \cdots \times {g}_{L}\frac{{b}_{L1}+{b}_{L2}{z}^{1}+\cdots +{b}_{L,m+1}{z}^{m}}{{a}_{L1}+{a}_{L2}{z}^{1}+\cdots +{a}_{L,n+1}{z}^{n}}\right).$$
digitalFilter
Objects
You can use Filter Analyzer to analyze digitalFilter
objects. Use
designfilt
to generate or edit digital
filters based on frequencyresponse specifications.
Filter System Objects
If you have DSP System Toolbox™, you can use Filter Analyzer to analyze these filter System objects.
System object™ 

dsp.AllpassFilter 
dsp.AllpoleFilter 
dsp.CICCompensationDecimator 
dsp.CICCompensationInterpolator 
dsp.CICDecimator 
dsp.CICInterpolator 

dsp.CoupledAllpassFilter 

dsp.Delay 
dsp.Differentiator 
dsp.DigitalDownConverter 
dsp.DigitalUpConverter 
dsp.FIRDecimator 
dsp.FIRFilter 
dsp.FIRHalfbandDecimator 
dsp.FIRHalfbandInterpolator 
dsp.FIRInterpolator 
dsp.FIRRateConverter 
dsp.FarrowRateConverter 
dsp.FilterCascade 
dsp.FourthOrderSectionFilter — Filter Analyzer
does not support fixedpoint arithmetic for this object 
dsp.HighpassFilter 
dsp.IIRFilter 
dsp.IIRHalfbandDecimator 
dsp.IIRHalfbandInterpolator 
dsp.LowpassFilter 
dsp.NotchPeakFilter —
Filter Analyzer does not support fixedpoint arithmetic
for this System object 
dsp.ParallelFilter 
dsp.SOSFilter 
dsp.VariableBandwidthFIRFilter 
dsp.VariableBandwidthIIRFilter 
If you also have DSP HDL Toolbox™, you can use Filter Analyzer to analyze these filter System objects.
System object 



Analysis
— Display filter analysis
gallery
Filter Analyzer supports these analysis types. To access the options available for each analysis, use the Analysis Options button in the Analysis Options toolstrip section.
FrequencyDomain Analyses
Analysis  Icon  Options  Description 

Magnitude response 
 Magnitude Mode: Select
Normalize Magnitude: Toggle on or off 

Phase response 
 Phase Units: Select
Phase
Display: Select  
Group delay response 
 Group Delay Units: Select
Samples or
Time  
Phase delay response 
 Phase Units: Select
Radians or
Degrees 

Magnitude estimate 
 Magnitude Mode: Select
Normalize Magnitude: Toggle on or off Number of Trials: Specify a numeric scalar 

Roundoff noise power spectrum 
 Number of Trials: Specify a numeric scalar 

TimeDomain Analyses
Analysis  Icon  Options  Description 

Impulse response 
 Specify Length: Select
Auto or
Userdefined  
Step response 
 Specify Length: Select
Auto or
Userdefined 
Other Analyses
Analysis  Icon  Options  Description 

Polezero plot 
 N/A  
Filter coefficients 
 Coefficients Format: Select
Decimal ,
Hexadecimal , or
Binary 

Filter information 
 N/A 

Analysis Options
— Frequency display and sample rates
tab section
Frequency Normalization
In Filter Analyzer, you can display filter responses using normalized frequencies or in terms of a sample rate of your choice. To select how to display frequencies, in the Analysis Options section of the Analyzer tab, set Frequency Normalization to one of these values.
Auto
— If some filters do not have a sample rate, the app analyzes filter responses using normalized frequencies measured in rad/sample. If all filters have a sample rate, the app analyzes filter responses using cyclical frequencies measured in Hz.Normalized
— The app analyzes filter responses using normalized frequencies measured in rad/sample.Unnormalized
— The app analyzes filter responses using cyclical frequencies measured in Hz.
Analysis Sample Rate
You can choose a reference sample rate, to use to compare the filters
plotted in a display to each other, by entering a value for Analysis
Sample Rate. You can also choose the highest sample rate among all
the filters in the display by selecting Max
. To edit
the sample rate units, click the pencil icon.
Analysis Options
Select Analysis Options to open the Analysis Options pane, which contains these options for all frequencydomain analyses:
Frequency Scale — To display responses in linear frequency scale, select
Linear
. To use a logarithmic frequency scale, selectLog
.Frequency Range — To display responses over positive frequencies only, select
One Sided
. To display responses over the whole frequency range, selectTwo Sided
. To display responses over the whole frequency range centered at zero, selectCentered
. To display responses over a custom range of frequencies, selectUserdefined
.Number of Points — Select the number of discrete Fourier transform points you want to use to display frequencydomain responses.
For a list of options available with each analysis type, see Analysis.
Display Options
— Annotations and advanced settings
toolstrip tab
View
— Legend, grid, cursors, masks
tab section
Filter Analyzer supports these display options:
Legend — Click to show or hide legends in the active display or in all displays.
Grid — Click to show or hide the grid in the active display or in all displays.
Hide Cursors — Click to hide the cursors in the active display or in all displays. To show the cursor corresponding to a given filter, click the cursor column of a signal in the Filters table.
Mask — Click to show or hide the spectral mask in the active display. You can use a standard filter specification mask or you can define your own.
Specify a custom mask as a set of frequencies and a corresponding set of values. To specify your selection, click User Settings. You can use normalized frequencies or express frequencies in units of Hz, kHz, MHz, or GHz. You can specify values for the magnitude of interest, the square of the magnitude, or the magnitude expressed in dB. The frequencies and the values must be finite.
Note
To use standard specification masks, filters must have design metadata. To include metadata in your design, use a
digitalFilter
object or a filter System object.
CTF View
— Visualize cascaded transfer functions
tab section
If you specify a filter as a cascade of transfer functions, you can choose the way that Filter Analyzer displays sectionbysection responses. This option applies only for displays with one filter. In the Display Options tab, click CTF View to toggle between displaying the overall response and displaying the responses section by section. Click CTF View ▼ to select one of these options:
Individual — Show filter responses of individual sections.
Cumulative — Show filter responses of cumulative sections.
Userdefined — Show filter responses of selected sections or combinations of sections. To specify your selection, click User Settings and specify Sections a cell array.
For example,
{[1 2 3] [4 5 6]}
directs the app to display responses for a cascade of sections 1, 2, and 3 and a cascade of sections 4, 5, and 6.
Programmatic Use
filterAnalyzer(filt
1,...,filt
n)
filt
1,...,filt
n)filterAnalyzer(
plots the responses of the specified filters in the Filter Analyzer app.filt
1,...,filt
n)
If Filter Analyzer is not open, this syntax opens the app and plots the responses.
If Filter Analyzer is open, this syntax plots the responses in a new display in the app.
Specify input filters as coefficient matrices, cell arrays, digitalFilter
objects, or System objects. For more information, see Import
Filter.
filterAnalyzer(filt
1,...,filt
n,Name=Value
)
filt
1,...,filt
n,Name=Value
)filterAnalyzer(
specifies nondefault options using one or more namevalue arguments.filt
1,...,filt
n,Name=Value
)
filterAnalyzer(filename
)
filename
)filterAnalyzer(
opens a Filter
Analyzer session stored in the specified MAT file filename
)filename
. If
Filter Analyzer is already open, this syntax replaces the current app session
with the new session.
filterAnalyzer(filename
,"append")
filename
,"append")filterAnalyzer(
appends the
filters stored in the specified MAT file filename
,"append")filename
to the current
Filter Analyzer session. If Filter Analyzer is not open, this syntax
is equivalent to the previous syntax.
[fa
,dispnums
] = filterAnalyzer(___)
fa
,dispnums
] = filterAnalyzer(___)[
returns a handle object for the Filter Analyzer and the numbers corresponding to
the newly added displays, using any combination of input arguments from previous syntaxes..
You can also obtain the handle fa
,dispnums
] = filterAnalyzer(___)fa
by typing fa =
getFilterAnalyzerHandle
at the command line.
Version History
Introduced in R2024aR2024b: Drag and drop filters from Filters table to displays
You can drag filters from the Filters table and drop them onto any display for visualization.
R2024b: Support for dsp.DCBlocker
and dsp.ComplexBandpassDecimator
objects
The Filter Analyzer app supports the dsp.DCBlocker
and dsp.ComplexBandpassDecimator
objects.
R2024b: Support for dsphdl.FIRFilter
and dsphdl.BiquadFilter
objects
The Filter Analyzer app supports the dsphdl.FIRFilter
(DSP HDL Toolbox) and dsphdl.BiquadFilter
(DSP HDL Toolbox) objects.
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)