|On this page…|
FDATool is the recommended filter design tool. Filter Designer will be removed in a future release. The following information is provided for users that choose to use Filter Designer while they transition to FDATool. Filter Designer, provides an interactive graphical environment for the design of digital IIR and FIR filters based on specifications that you enter on a magnitude or pole-zero plot.
You can design filters of the following types using the Filter Designer:
You can use the following filter methods to design FIR filters:
You can use the following filter methods to design IIR filters:
Chebyshev Type I
Chebyshev Type II
You can use the Pole/Zero Editor to design arbitrary FIR and IIR filters by placing and moving poles and zeros on the complex z-plane.
You can also superimpose spectra on a filter's magnitude response to see if the filtering requirements are met.
Open the Filter Designer from SPTool by either:
Clicking New in the Filters list in SPTool
Selecting a filter you want to edit from the Filters list in SPTool, and then clicking Edit
The Filter Designer has the following components:
A pull-down Filter menu for selecting a filter from the list in SPTool
A Sampling Frequency text box
A pull-down Algorithm menu for selecting a filter design method or a pole-zero plot display
A Specifications area for viewing or modifying a filter's design parameters or pole-zero locations
A plot display region for graphically adjusting filter magnitude responses or the pole-zero locations
A Measurements area for viewing the response characteristics and stability of the current filter
A toolbar with the following buttons
Print and print preview
Zoom in and out
Turn on the What's This help
The MATLAB® structures created by SPTool have several associated fields, many of which are also MATLAB structures. See the MATLAB documentation for general information about MATLAB structures.
For example, after exporting a filter filt1 to the MATLAB workspace, type
to display the fields of the MATLAB filter structure. The tf, Fs, and specs fields of the structure contain the information that describes the filter.
The tf field is a structure containing the transfer function representation of the filter. Use this field to obtain the filter coefficients;
filt1.tf.num contains the numerator coefficients.
filt1.tf.den contains the denominator coefficients.
The vectors contained in these structures represent polynomials in descending powers of z. The numerator and denominator polynomials are used to specify the transfer function
b is a vector containing the coefficients from the tf.num field.
a is a vector containing the coefficients from the tf.den field.
m is the numerator order.
n is the denominator order.
You can change the filter representation from the default transfer function to another form by using the tf2ss or tf2zp functions.
The Fs field contains the sampling frequency of the filter in hertz.
The specs field is a structure containing parameters that you specified for the filter design. The first field, specs.currentModule, contains a string representing the most recent design method selected from the Filter Designer's Algorithm list before you exported the filter. The possible contents of the currentModule field and the corresponding design methods are shown below.
Contents of the currentModule field
Chebyshev Type I IIR
Chebyshev Type II IIR
Least Squares FIR
Kaiser Window FIR
Following the specs.currentModule field, there may be up to seven additional fields, with labels such as specs.fdremez, specs.fdfirls, etc. The design specifications for the most recently exported filter are contained in the field whose label matches the currentModule string. For example, if the specs structure is
filt1.specs ans currentModule: 'fdremez' fdremez: [1x1 struct]
the filter specifications are contained in the fdremez field, which is itself a data structure.
The specifications include the parameter values from the Specifications region of the Filter Designer, such as band edges and filter order. For example, the filter above has the following specifications stored in filt1.specs.fdremez:
filt1.specs.fdremez ans = setOrderFlag: 0 type: 3 f: [0 0.2000 0.3000 0.5000 0.6000 1] m: [6x1 double] Rp: 0.0100 Rs: 75 wt: [3.2371 1 3.2371] order: 78
Because certain filter parameters are unique to a particular design, this structure has a different set of fields for each filter design.
The table below describes the possible fields associated with the filter design specification field (the specs field) that can appear in the exported structure.
Kaiser window β parameter.
Contains a vector of band-edge frequencies, normalized so that 1 Hz corresponds to half the sample frequency.
Passband cutoff frequencies. Scalar for lowpass and highpass designs, two-element vector for bandpass and bandstop designs.
Stopband cutoff frequencies. Scalar for lowpass and highpass designs, two-element vector for bandpass and bandstop designs.
The response magnitudes corresponding to the band-edge frequencies in f.
Passband ripple (dB)
Stopband attenuation (dB)
Contains 1 if the filter order was specified manually (i.e., the Minimum Order box in the Specifications region was not selected). Contains 0 if the filter order was computed automatically.
Contains 1 for lowpass, 2 for highpass, 3 for bandpass, or 4 for bandstop.
-3 dB frequency for Butterworth IIR designs.
Vector of Kaiser window coefficients.
Cutoff frequency for the Kaiser window FIR filter when setOrderFlag = 1.
Vector of weights, one weight per frequency band.
To design a filter transfer function using the Filter Designer Pole/Zero Editor:
Specify the new location(s) of the selected pole, zero, or conjugate pair by typing values into the Mag and Angle fields (for angular coordinates) or X and Y (for rectangular coordinates) fields. Alternatively, position the poles and zeros by dragging the and symbols.
Design a new filter or edit an existing filter in the same way.
You can use your mouse to move poles and zeros around the pole/zero plot and modify your filter design.
Enable moving poles or zeros by dragging on the plot
Erase poles or zeros
You can move both members of a conjugate pair simultaneously by manipulating just one of the poles or zeros.
To ungroup conjugates, select the desired pair and clear Conjugate pair in the Specifications region on the Filter Designer.
When you place two or more poles (or two or more zeros) directly on top of each other, a number is displayed next to the symbols (on the left for poles, and on the right for zeros) indicating the number of poles or zeros at that location (e.g., for three zeros). This number makes it easy to keep track of all the poles and zeros in the plot area, even when several are superimposed on each other and are not visually differentiable. Note, however, that this number does not indicate the multiplicity of the poles or zeros to which it is attached.
To detect whether or not a set of poles or zeros are truly multiples, use the zoom tools to magnify the region around the poles or zeros in question. Because numerical limitations usually prevent any set of poles or zeros from sharing exactly the same value, at a high enough zoom level even truly multiple poles or zeros appear distinct from each other.
A common way to assess whether a particular group of poles or zeros contains multiples is by comparing the mutual proximity of the group members against a selected threshold value. As an example, the residuez function defines a pole or zero as being a multiple of another pole or zero if the absolute distance separating them is less than 0.1% of the larger pole or zero's magnitude.
After designing a filter in the Filter Designer, you can redesign it by dragging the specification lines on the magnitude plot. Use the specification lines to change passband ripple, stopband attenuation, and edge frequencies.
In the following example, create a Chebyshev filter and modify it by dragging the specification lines:
Fp = 800
Fs = 700
Rp = 2.5
Rs = 35
The cursor changes to the up/down drag indicator.