www.gusucode.com > signal 案例源码程序 matlab代码 > signal/FDAToolExample.m

    %% Introduction to Filter Designer
%
% This example shows how to use Filter Designer as a convenient alternative
% to the command line filter design functions.
%
% Filter Designer is a powerful graphical user interface (GUI) in the
% Signal Processing Toolbox(TM) for designing and analyzing filters.
%
% Filter Designer enables you to quickly design digital FIR or IIR filters
% by setting filter performance specifications, by importing filters from
% your MATLAB(R) workspace or by adding, moving, or deleting poles and
% zeros. Filter Designer also provides tools for analyzing filters, such as
% magnitude and phase response plots and pole-zero plots.

% Copyright 2005-2016 The MathWorks, Inc.

%% Getting Started
%
% Type filterDesigner at the MATLAB command prompt:
%
%
% >>filterDesigner 
%
%
% A *Tip of the Day* dialog displays with suggestions for using Filter
% Designer. Then, the GUI displays with a default filter.
% 
% <<../FilterDesignerDefault.png>>
%
% The GUI has three main regions:
%
% * The Current Filter Information region
% * The Filter Display region and 
% * The Design panel  
% 
% The upper half of the GUI displays information on filter specifications
% and responses for the current filter. The Current Filter Information
% region, in the upper left, displays filter properties, namely the filter
% structure, order, number of sections used and whether the filter is
% stable or not.  It also provides access to the Filter manager for working
% with multiple filters. 
%
% The Filter Display region, in the upper right, displays various filter
% responses, such as, magnitude response, group delay and filter
% coefficients.
%
% The lower half of the GUI is the interactive portion of Filter Designer.
% The Design Panel, in the lower half is where you define your filter
% specifications.  It controls what is displayed in the other two upper
% regions.  Other panels can be displayed in the lower half by using the
% sidebar buttons.
%
% The tool includes Context-sensitive help.  You can right-click or click
% the *What's This?* button to get information on the different parts of
% the tool.
%
%
%% Designing a Filter
%
% We will design a low pass filter that passes all frequencies less than or
% equal to 20% of the Nyquist frequency (half the sampling frequency) and
% attenuates frequencies greater than or equal to 50% of the Nyquist
% frequency.  We will use an FIR Equiripple filter with these
% specifications:
%
% * Passband attenuation 1 dB 
% * Stopband attenuation 80 dB 
% * A passband frequency 0.2 [Normalized (0 to 1)] 
% * A stopband frequency 0.5 [Normalized (0 to 1)] 
%
% To implement this design, we will use the following specifications:
%
% <<../FDAToolDesignFir.png>>
% 
%
% 1. Select *Lowpass* from the dropdown menu under *Response Type* and
% *Equiripple* under *FIR Design Method*.  In general, when you change the
% Response Type or Design Method, the filter parameters and Filter Display
% region update automatically.
%
% 2. Select *Specify order* in the *Filter Order* area and enter *30*.
%
% 3. The FIR Equiripple filter has a *Density Factor* option which controls
% the density of the frequency grid. Increasing the value creates a filter
% which more closely approximates an ideal equiripple filter, but more time
% is required as the computation increases.  Leave this value at 20.
%
% 4. Select *Normalized (0 to 1)* in the Units pull down menu in the *Frequency
% Specifications* area.
%
% 5. Enter *0.2* for *wpass* and *0.5* for *wstop* in the *Frequency
% Specifications* area.
%
% 6. *Wpass* and *Wstop*, in the *Magnitude Specifications* area are
% positive weights, one per band, used during optimization in the FIR
% Equiripple filter. Leave these values at 1.
%
% 7. After setting the design specifications, click the *Design Filter*
% button at the bottom of the GUI to design the filter.
%
% The magnitude response of the filter is displayed in the Filter Analysis
% area after the coefficients are computed.
% 
% <<../FDAToolFirMagnitude.png>>
%
%% Viewing other Analyses
%
% Once you have designed the filter, you can view the following filter
% analyses in the display window by clicking any of the buttons on the toolbar:
%
% <<../FDAToolToolbar.png>>
%
% In order from left to right, the buttons are
%
% * Magnitude response 
% * Phase response 
% * Magnitude and Phase responses 
% * Group delay response 
% * Phase delay response 
% * Impulse response 
% * Step response 
% * Pole-zero plot 
% * Filter Coefficients
% * Filter Information
%
%% Comparing the Design to Filter Specifications
%
% Filter Designer allows you to measure how closely your design meets the
% filter specifications by using Specification masks which overlay the
% filter specifications on the response plot. In the Display Region, when
% the Magnitude plot is displayed, right click on the y-axis label
% 'Magnitude (dB)' and select *Magnitude*. Then select *Specification Mask*
% from the *View* menu to overlay the filter specifications on the response
% plot.
%
% The magnitude response of the filter with Specification mask is shown below:
%
% <<../FDAToolDesignMask.png>>
%
%% Changing Axes Units
% 
% You can change the x- or y-axis units by right-clicking the mouse on an
% axis label and selecting the desired units.  The current units have a
% checkmark.  
% 
% <<../FDAToolMagnitudeAxis.png>>
%
%% Marking Data Points
%
% In the Display region, you can click on any point in the plot to add a
% data marker, which displays the values at that point.  Right-clicking on
% the data marker displays a menu where you can move, delete or adjust the
% appearance of the data markers.
%
% <<../FDAToolDataMarker.png>>
%
%% Optimizing the Design
%
% To minimize the cost of implementation of the filter, we will try to
% reduce the number of coefficients by using *Minimum Order* option in the
% design panel.
% 
% Change the selection in *Filter Order* to *Minimum Order* in the
% Design Region and leave the other parameters as they are.
% 
% Click the *Design Filter* button to design the new filter.
%
% <<../FDAToolMinimumOrder.png>>
% 
% As you can see in the Current Filter Information area, the filter order
% decreased from 30 to 16, the number of ripples decreased and the
% transition width became wider.  The passband and the stopband
% specifications still meet the design criteria.
%
%% Changing Analyses Parameters
%
% By right-clicking on the plot and selecting Analysis Parameters, you can
% display a dialog box for changing analysis-specific parameters. (You can
% also select Analysis Parameters from the Analysis menu.)  
%
% <<../FDAToolAnalysisParam.png>>
% 
% To save the displayed parameters as the default values, click *Save as Default*. 
% To restore the MATLAB-defined default values, click *Restore Original Defaults*. 
%
%% Exporting the Filter
%
% Once you are satisfied with your design, you can export your filter to
% the following destinations:
%
% * MATLAB workspace
% * MAT-file
% * Text-file
%
% Select *Export* from the *File* menu.
%
% <<../FDAToolExportCoeff.png>>
%
% When you choose to export to the MATLAB workspace or to a MAT-file, you
% can export the filter as coefficients. If a DSP System Toolbox(TM) is
% available you can also export your filter as a System object.
%
%% Generating a MATLAB File
%
% Filter Designer allows you to generate MATLAB code to re-create your
% filter. This enables you to embed your design into existing code or
% automate the creation of your filters in a script.
%
% Select *Generate MATLAB code* from the *File* menu, choose *Filter Design
% Function* and specify the filename in the Generate MATLAB code dialog
% box.
%
% The following code was generated from the minimum order filter we
% designed above:
%
% <<../FDAToolMinOrderCode.png>>
%
% 
%% Quantizing a Filter
% 
% If you have the DSP System Toolbox(TM) installed, the *Set quantization
% parameters* panel is available on the sidebar: 
%
% <<../FDAToolQuantizationPanel.png>>
%
% 
% You can use this panel to quantize and analyze double-precision filters.
% With the DSP System Toolbox you can quantize from double-precision to
% single-precision.  If you have the Fixed-Point Designer, you can quantize
% filters to fixed-point precision.  Note that you cannot mix
% floating-point and fixed-point arithmetic in your filter.
%
% 
%% Targets
%
% The *Targets* menu of Filter Designer allows you to generate various
% types of code representing your filter.  For example, you can generate C
% header files, XILINX coefficients(COE) files (with the DSP System
% Toolbox) and VHDL, Verilog along with test benches (with Filter Design
% HDL Coder(TM)).
%
%% Additional Features
% 
% Filter Designer also integrates additional functionality from these other
% MathWorks(TM) products:
%
% * *DSP System Toolbox*- Adds advanced FIR and IIR design techniques (i.e.
%   Filter transformations, Multirate filters) and generates equivalent
%   block for the filter
%
% * *Embedded Coder(TM)*- Generates, builds and deploys code for Texas 
%   Instruments C6000 processors.
%
% * *Filter Design HDL Coder*- Generates synthesizable VHDL or Verilog
%   code for fixed-point filters
%
% * *Simulink(R)*- Generates filters from atomic Simulink blocks