You are here : matlabSignal Processingfvtool

# fvtool() - Signal Processing

```fvtool(b,a) opens FVTool
and displays the magnitude response of the digital filter defined
with numerator, b and denominator, a.
Using FVTool you can display the phase response, group delay, impulse
response, step response, pole-zero plot, and coefficients of the filter.
You can export the displayed response to a file with File > Export.Note:

If the input to fvtool is single precision,
the magnitude response is calculated using single-precision arithmetic. fvtool(sos) opens FVTool and displays the
magnitude response of the digital filter defined by the matrix of
second order sections, sos. sos is
a K-by-6 matrix, where the number of sections, K,
must be greater than or equal to 2. If the number of sections is less
than 2, fvtool considers the input to be a numerator
vector. Each  row of sos corresponds to the coefficients
of a second order (biquad) filter. The ith row
of the sos matrix corresponds to [bi(1)
bi(2) bi(3) ai(1) ai(2) ai(3)].fvtool(d) opens FVTool and displays the
magnitude response of a digital filter, d. Use designfilt to generate d based
on frequency-response specifications.fvtool(b1,a1,b2,a2,...,bN,aN) opens
FVTool and displays the magnitude responses of multiple filters defined
with numerators, b1, …, bN,
and denominators, a1, ..., aN.fvtool(sos1,sos2,...,sosN) opens FVTool
and displays the magnitude responses of multiple filters defined with
second order section matrices, sos1, sos2,
..., sosN.fvtool(Hd) opens FVTool
and displays the magnitude responses  for the dfilt filter
object, Hd, or the array of dfilt filter
objects.fvtool(Hd1,Hd2,...,HdN) opens
FVTool and displays the magnitude responses of the filters in the dfilt objects Hd1, Hd2,
...HdN.If you have the DSP System Toolbox™ product installed,
you can also use fvtool(H) and fvtool(H1,H2,...) to
analyze:Quantized filter objects (dfilt with
arithmetic set to 'single' or 'fixed')Any of the following filter System objects.The following
Filter System objects are supported by this analysis function: Filter System objects
dsp.AllpassFilter
dsp.AllpoleFilter
dsp.CICCompensationDecimator
dsp.CICCompensationInterpolator
dsp.CICDecimator
dsp.CICInterpolator
dsp.CoupledAllpassFilter
dsp.FarrowRateConverter
dsp.FIRDecimator
dsp.FIRFilter
dsp.FIRHalfbandDecimator
dsp.FIRHalfbandInterpolator
dsp.FIRInterpolator
dsp.FIRRateConverter
dsp.HighpassFilter
dsp.IIRFilter
dsp.IIRHalfbandDecimator
dsp.IIRHalfbandInterpolator
dsp.LowpassFilter
dsp.NotchPeakFilter
dsp.VariableBandwidthFIRFilter
dsp.VariableBandwidthIIRFilter
dsp.DigitalDownConverter and dsp.DigitalUpConverter System
objects support FVTool. You must pass the 'Arithmetic' input
to the FVTool when you call FVTool on these System objects. When the input filter is a dfilt object,
FVTool performs fixed-point analysis if the arithmetic property of
the filter object is set to 'fixed'. However, for
filter System objects, fvtool(H,'Arithmetic',ARITH,...) analyzes H,
based on the arithmetic specified in the ARITH input.ARITH can be one of 'double', 'single',
or 'fixed'. The 'Arithmetic' input
is only relevant for the analysis of filter System objects. The arithmetic
setting ARITH, applies to all the filter System
objects that you input to FVTool. When you specify 'double' or 'single',
the function performs double- or single-precision analysis. When you
specify 'fixed' , the arithmetic changes depending
on the setting of the CoefficientDataType property
and whether the System object is locked or unlocked. Details for Fixed-Point Arithmetic

System Object StateCoefficient Data TypeRule
Unlocked'Same as input'The function assumes that the coefficient data type is signed,
16 bit, and autoscaled. The function performs fixed-point analysis
based on this assumption.
Unlocked'Custom'The function performs fixed-point analysis based on the setting
of the CustomCoefficientsDataType property.
Locked'Same as input'When the input data type is 'double' or 'fixed',
the function assumes that the coefficient data type is signed, 16-bit,
and autoscaled. The function performs fixed-point analysis based on
this assumption.
Locked'Custom'The function performs fixed-point analysis based on the setting
of the CustomCoefficientsDataType property.

If you do not specify the arithmetic for non-CIC structures,
and the System object is in an unlocked state, the function uses double-precision
arithmetic. If the System object is locked, the function performs
analysis based on the locked input data type. CIC structures only
support fixed-point arithmetic.Analysis methods noisepsd and freqrespest have behavior restrictions in fvtool.
To see the rules, click the links to these methods.h = fvtool(...) returns
a figure handle h. You can use this handle to interact
with FVTool from the command line. See Controlling FVTool from the MATLAB Command Line.
FVTool has two toolbars.An extended version of the MATLAB® plot editing toolbar.
The following table shows the toolbar icons specific to FVTool. IconDescription

Restore default view. This view displays buffer regions
around the data and shows only significant data. To see the response
using standard MATLAB plotting, which shows all data values,
use View > Full View.

Toggle legend

Toggle grid

Link to FDATool (appears only if FVTool was started from
FDATool)

Toggle Add mode/Replace mode (appears only if FVTool
was launched from FDATool)
Analysis toolbar with the following icons
Magnitude response of the current filter. See freqz and zerophase for
the y-axis label of the Magnitude plot and select Zero-phase from

Superimposes the magnitude response and the phase response
of the current filter. See freqz for

Shows the group delay of the current filter. Group delay
is the average delay of the filter as a function of frequency. See grpdelay for more information.

Shows the phase delay of the current filter. Phase delay
is the time delay the filter imposes on each component of the input
signal. See phasedelay for

Impulse response of the current filter. The impulse response
is the response of the filter to a impulse input. See impz for more information.

Step response of the current filter. The step response
is the response of the filter to a step input. See stepz for more information.

Pole-zero plot, which shows the pole and zero locations
of the current filter on the z-plane. See zplane for more information.

Filter coefficients of the current filter, which depend
on the filter structure (e.g., direct-form, lattice, etc.) in a text
box. For SOS filters, each section is displayed as a separate filter.

Detailed filter information.
Linking to FDAToolIn fdatool, selecting View > Filter Visualization Tool or the Full View Analysis toolbar
button
when an analysis is displayed starts
FVTool for the current filter. You can synchronize FDATool and FVTool
. Any changes
made to the filter in FDATool are immediately reflected in FVTool. Two FDATool link modes are provided via the Set Link
Mode toolbar button:Replace
— removes the
filter currently displayed in FVTool and inserts the new filter.Add
— retains the filter currently
displayed in FVTool and adds the new filter to the display.Modifying the AxesYou can change the x- or y-axis
units by right-clicking the mouse on the axis label or by right-clicking
on the plot and selecting Analysis Parameters.
Available options for the axes units are as follows. PlotX-Axis
UnitsY-Axis Units
MagnitudeNormalized FrequencyLinear FrequencyMagnitudeMagnitude (dB)Magnitude squaredZero-Phase
Magnitude and PhaseNormalized FrequencyLinear Frequency(y-axis on left side)MagnitudeMagnitude (dB)Magnitude squaredZero-Phase(y-axis on right side)PhaseContinuous PhaseDegreesRadians
Group DelayNormalized FrequencyLinear FrequencySamplesTime
Impulse ResponseSamplesTimeAmplitude
Step ResponseSamplesTimeAmplitude
Pole-ZeroReal PartImaginary Part
Modifying the PlotYou can use any of the plot editing toolbar buttons to
change the properties of your plot. Analysis Parameters are parameters that apply
to the displayed analyses. To display them, right-click in the plot
area and select Analysis Parameters from
the menu. (Note that you can access the menu only if the Edit
Plot button is inactive.) The following analysis parameters
are displayed. (If more than one response is displayed, parameters
applicable to each plot are displayed.)  Not all of these analysis
fields are displayed for all types of plots:Normalized Frequency —
if checked, frequency is normalized between 0 and 1, or if not checked,
frequency is in HzFrequency Scale — y-axis
scale (Linear or Log)Frequency Range — range
of the frequency axis or Specify freq. vectorNumber of Points — number
of samples used to compute the responseFrequency Vector — vector
to use for plotting, if Specify freq. vector is
selected in Frequency Range.Magnitude Display — y-axis
units (Magnitude, Magnitude (dB), Magnitude
squared, or Zero-Phase)Phase Units — y-axis
units (Degrees or Radians)Phase Display — type of
phase plot (Phase or Continuous Phase)Group Delay Units — y-axis
units (Samples or Time)Specify Length — length
type of impulse or step response (Default or Specified)Length — number of points
to use for the impulse or step responseIn addition to the above analysis parameters, you can change
the plot type for Impulse and Step Response plots by right-clicking
and selecting Line with Marker, Stem or Line from
the context menu. You can change the x-axis units
by right-clicking the x-axis label and selecting Samples or Time.To save the displayed parameters as the default values to use
when FDATool or FVTool is opened, click Save as default.To restore the default values, click Restore original
defaults.Data tips display information about a particular point in the
plot. See Display Data Values Interactively in
the MATLAB documentation for information on data tips.If you have the DSP System Toolbox software, FVTool displays
plot. Note

To use View > Passband
zoom, your filter must have been designed
using fdesign or FDATool. Passband zoom is not
provided for cascaded integrator-comb (CIC) filters because CICs do
not have conventional passbands.Overlaying a ResponseYou can overlay a second response on the plot by selecting Analysis > Overlay Analysis and selecting an available response. A second y-axis
is added to the right side of the response plot. The Analysis Parameters
dialog box shows parameters for the x-axis and
both y-axes. See Display Analysis Parameters for a sample Analysis Parameters dialog box.Controlling FVTool from the MATLAB Command LineAfter you obtain the handle for FVTool, you can control some
aspects of FVTool from the command line. In addition to the standard Handle Graphics® properties (see Handle
Graphics in the MATLAB documentation), FVTool has the following
properties:'Analysis' — displays the
specified type of analysis plot. The following table lists the analyses
and corresponding analysis strings. Note that the only analyses that
use filter internals are magnitude response estimate and round-off
noise power, which are available only with the DSP System Toolbox product.Analysis TypeAnalysis
String
Magnitude plot'magnitude'
Phase plot'phase'
Magnitude and phase plot`freq'
Group delay plot'grpdelay'
Phase delay plot`phasedelay'
Impulse response plot'impulse'
Step response plot'step'
Pole-zero plot'polezero'
Filter coefficients'coefficients'
Filter information'info'
Magnitude response estimate (available only
with the DSP System Toolbox product, see freqrespest for
Round-off noise power (available only with
the DSP System Toolbox product, see noisepsd for
'Grid' — controls whether
the grid is 'on' or 'off''Legend' — controls whether
the legend is 'on' or 'off''Fs' — controls the sampling
frequency of filters in FVTool. The sampling frequency vector must
be of the same length as the number of filters or a scalar value.
If it is a vector, each value is applied to its corresponding filter.
If it is a scalar, the same value is applied to all filters.SosViewSettings —
(This option is available only if you have the DSP System Toolbox product.)
For second-order sections filters, this controls how the filter is
displayed. The SOSViewSettings property contains
an object so you must use this syntax to set it:  set(h.SOSViewSettings,'View',viewtype),
where viewtype is one of the following:'Complete' — Displays the
complete response of the overall filter'Individual' — Displays
the response of each section separately'Cumulative' — Displays the response for each
section accumulated with each prior section. If your filter has three
sections, the first plot shows section one, the second plot shows
the accumulation of sections one and two, and the third plot show
the accumulation of all three sections.You can also define whether to use SecondaryScaling,
which determines where the sections should be split. The secondary
scaling points are the scaling locations between the recursive and
the nonrecursive parts of the section. The default value is false,
which does not use secondary scaling. To turn on secondary scaling,
use this syntax:   set(h.SOSViewSettings,'View','Cumulative',true)'UserDefined' — Allows you
to define which sections to display and the order in which to display
them. Enter a cell array where each section is represented by its
index. If you enter one index, only that section is plotted. If you
enter a range of indices, the combined response of that range of sections
is plotted. For example, if your filter has four sections, entering {1:4} plots
the combined response for all four sections, and entering {1,2,3,4} plots
the response for each section individually.Note

You can change other properties of FVTool from the command line
using the set function. Use get(h) to
view property tags and current property settings.You can use the following methods with the FVTool handle.addfilter(h,filtobj) adds a new filter to
FVTool. The new filter, filtobj, must be a dfilt filter object. You can specify
the sampling frequency of the new filter with addfilter(h,filtobj,'Fs',10).setfilter(h,filtobj) replaces the filter
in FVTool with the filter specified in filtobj.
You can set the sampling frequency as described above.deletefilter(h, index) deletes the filter
at the FVTool cell array index location.legend(h,str1,str2,...) creates a legend
in FVTool by associating str1 with filter 1, str2 with
filter 2, etc. See legend in
the MATLAB documentation for information.```

### Syntax

`fvtool(b,a)fvtool(sos)fvtool(d)fvtool(b1,a1,b2,a2,...,bN,aN)fvtool(sos1,sos2,...,sosN)fvtool(Hd)fvtool(Hd1,Hd2,...,HdN)h = fvtool(...)`

### Example

```Magnitude Response of Elliptic FilterOpen This Example
Display the magnitude response of a 6th-order elliptic filter. Specify a passband ripple of 3 dB, a stopband attenuation of 50 dB, a sample rate of 1 kHz, and a normalized passband edge of 300 Hz. Start FVTool from the command line.
[b,a] = ellip(6,3,50,300/500);
fvtool(b,a)

Display Analysis ParametersOpen This Example
Display and analyze multiple FIR filters, starting FVTool from the command line.
b1 = firpm(20,[0 0.4 0.5 1],[1 1 0 0]);
b2 = firpm(40,[0 0.4 0.5 1],[1 1 0 0]);
fvtool(b1,1,b2,1)

Display the associated analysis parameters.

FVTool Figure Handle CommandsOpen This Example
Start FVTool from the command line. Display the magnitude response of a 6th-order elliptic filter. Specify a passband ripple of 3 dB, a stopband attenuation of 50 dB, a sample rate of 1 kHz, and a normalized passband edge of 300 Hz.
[b,a]=ellip(6,3,50,300/500);
h = fvtool(b,a);

Display the phase response of the filter.h.Analysis = 'phase';

Turn on the plot legend and add text.legend(h,'Phase plot')

View the all the properties of the plot. The properties specific to FVTool are at the end of the list.get(h)
Grid: 'on'
Legend: 'On'
AnalysisToolbar: 'on'
FigureToolbar: 'on'
SOSViewSettings: [1x1 dspopts.sosview]
Fs: 1
Alphamap: [1x64 double]
CloseRequestFcn: 'closereq'
Color: [0.9400 0.9400 0.9400]
Colormap: [64x3 double]
CurrentAxes: [1x1 Axes]
CurrentCharacter: ''
CurrentObject: [0x0 GraphicsPlaceholder]
CurrentPoint: [0 0]
DockControls: 'on'
FileName: ''
IntegerHandle: 'on'
InvertHardcopy: 'on'
KeyPressFcn: ''
KeyReleaseFcn: ''
Name: 'Phase Response'
NextPlot: 'new'
NumberTitle: 'on'
PaperUnits: 'inches'
PaperOrientation: 'portrait'
PaperPosition: [-0.9900 1.9933 10.4800 7.0133]
PaperPositionMode: 'auto'
PaperSize: [8.5000 11]
PaperType: 'usletter'
Pointer: 'arrow'
PointerShapeCData: [16x16 double]
PointerShapeHotSpot: [1 1]
Position: [1 1 786 526]
Renderer: 'opengl'
RendererMode: 'auto'
Resize: 'on'
ResizeFcn: ''
SelectionType: 'normal'
ToolBar: 'auto'
Type: 'figure'
Units: 'pixels'
WindowButtonDownFcn: ''
WindowButtonMotionFcn: ''
WindowButtonUpFcn: ''
WindowKeyPressFcn: ''
WindowKeyReleaseFcn: ''
WindowScrollWheelFcn: ''
WindowStyle: 'docked'
BeingDeleted: 'off'
ButtonDownFcn: ''
Children: [15x1 Graphics]
Clipping: 'on'
CreateFcn: ''
DeleteFcn: ''
BusyAction: 'queue'
HandleVisibility: 'on'
HitTest: 'on'
Interruptible: 'on'
Parent: [1x1 Root]
Selected: 'off'
SelectionHighlight: 'on'
Tag: 'filtervisualizationtool'
UserData: []
Visible: 'on'
FrequencyVector: [1x256 double]
Analysis: 'phase'
NumberofPoints: 8192
ShowReference: 'on'
NormalizedFrequency: 'on'
PhaseDisplay: 'Phase'
FrequencyRange: '[0, pi)'
PolyphaseView: 'off'
OverlayedAnalysis: ''
FrequencyScale: 'Linear'

Related ExamplesFilter Analysis using FVTool```