目录
此示例说明如何使用方便的滤波器设计工具替代命令行滤波器设计函数。
滤波器设计工具是 Signal Processing Toolbox™ 中一个功能强大的图形用户界面 (GUI),用于设计和分析滤波器。
滤波器设计工具使能够通过设置滤波器性能设定、从 MATLAB® 工作区导入滤波器或通过添加、移动或删除极点和零点来快速设计数字 FIR 或 IIR 滤波器。滤波器设计工具还提供用于分析滤波器的工具,例如幅值和相位响应图以及零极点图。
快速入门
在 MATLAB 命令提示符下键入 filterDesigner:
>> filterDesigner
将显示每日提示对话框,其中包含使用滤波器设计工具的建议。然后,GUI 显示默认滤波器。
GUI 有三个主要区域:
-
“当前滤波器信息”区域
-
“滤波器显示”区域
-
“设计”面板
GUI 的上半部分显示当前滤波器的滤波器设定和响应信息。左上角的“当前滤波器信息”区域显示滤波器属性,即滤波器结构、阶、使用的节数以及滤波器是否稳定。还可以通过它访问滤波器管理器以处理多个滤波器。
右上角的“滤波器显示”区域显示各种滤波器响应,如幅值响应、群延迟和滤波器系数。
GUI 的下半部分是滤波器设计工具的交互部分。下半部分中的“设计”面板用于对滤波器进行设定。它控制两个上部区域中显示的内容。使用边栏按钮可以在下半部分中显示其他面板。
该工具包括快捷帮助。可以右键单击或点击这是什么? 按钮以获取关于该工具不同部分的信息。
设计滤波器
我们将设计一个低通滤波器,使所有小于或等于奈奎斯特频率 20%(采样频率的一半)的频率通过,并衰减大于或等于 Nyquist 频率 50% 的频率。我们将使用一个具有以下设定的 FIR 等波纹滤波器:
-
通带衰减 1 dB
-
阻带衰减 80 dB
-
通带频率 0.2 [归一化(0 到 1)]
-
阻带频率 0.5 [归一化(0 到 1)]
为了实现此设计,我们将使用以下设定:
1.在响应类型的下拉菜单中选择低通,在 FIR 设计方法下选择等波纹。通常,当更改响应类型或设计方法时,滤波器参数和“滤波器显示”区域会自动更新。
2.在滤波器阶数区域中选择指定阶数,并输入 30。
3.FIR 等波纹滤波器有一个密度因子选项,用于控制频率网格的密度。增大该值会创建一个更接近理想等波纹滤波器的滤波器,但由于计算量会增加,因此需要更多的时间。将此值保留为 20。
4.在频率设定区域的“单位”下拉菜单中,选择归一化(0 到 1)。
5.在频率设定区域中,为 wpass 输入 0.2,为 wstop 输入 0.5。
6.幅值设定区域中的 Wpass 和 Wstop 是正权重,每个频带有一个权重,在 FIR 等波纹滤波器的优化过程中使用。将这些值保留为 1。
7.完成设计设定后,点击 GUI 底部的设计滤波器按钮来设计滤波器。
完成系数计算后,滤波器的幅值响应会显示在“滤波器分析”区域。
查看其他分析
完成滤波器设计后,可以通过点击工具栏上的任意按钮,在显示窗口中查看以下滤波器分析:
按从左到右的顺序,按钮排列如下
-
幅值响应
-
相位响应
-
幅值响应和相位响应
-
群延迟响应
-
相位延迟响应
-
脉冲响应
-
阶跃响应
-
零极点图
-
滤波器系数
-
滤波器信息
更改轴单位
通过在轴标签上右键点击鼠标并选择所需的单位,可以更改 x 轴或 y 轴单位。当前单位有复选标记。
标记数据点
在“显示”区域中,可以点击绘图中的任意点来添加数据标记,该标记显示该点处的值。右键点击数据标记会显示一个菜单,可以在其中移动、删除数据标记或调整数据标记的外观。
优化设计
为了最大限度地降低滤波器的实现成本,我们将尝试使用设计面板中的最小阶选项来减少系数个数。
在“设计”区域中,将滤波器阶数中的选择更改为最小阶,其他参数保持不变。
点击设计滤波器按钮以设计新滤波器。
可以在“当前滤波器信息”区域中看到,滤波器阶数从 30 减少到 16,波纹数量减少,过渡带宽度变宽。通带设定和阻带设定仍然符合设计标准。
更改分析参数
通过在绘图上右键点击并选择“分析参数”,可以显示用于更改特定于分析的参数的对话框。(也可以从“分析”菜单中选择“分析参数”。)
要将显示的参数保存为默认值,请点击保存为默认值。要还原 MATLAB 定义的默认值,请点击还原原始默认值。
导出滤波器
如果对设计满意,可以将滤波器导出到以下目标位置:
-
MATLAB 工作区
-
MAT 文件
-
文本文件
从文件菜单中选择导出。
当选择导出到 MATLAB 工作区或 MAT 文件时,您可以将滤波器导出为系数。如果 DSP System Toolbox™ 可用,也可以将滤波器导出为 System object。
生成 MATLAB 文件
滤波器设计工具允许您生成 MATLAB 代码来重新创建您的滤波器。这能够将设计嵌入到现有代码中,或在脚本中自动创建滤波器。
从文件菜单中选择生成 MATLAB 代码,选择滤波器设计函数,并在“生成 MATLAB 代码”对话框中指定文件名。
以下代码是根据我们上面设计的最小阶滤波器生成的:
量化滤波器
如果安装了 DSP System Toolbox™,边栏上会提供设置量化参数面板:
可以使用此面板来量化和分析双精度滤波器。借助 DSP System Toolbox,可以将滤波器从双精度量化为单精度。如果有 Fixed-Point Designer,可以将滤波器量化为定点精度。请注意,不能在滤波器中混合使用浮点和定点算术。
目标
通过滤波器设计工具的目标菜单,可以生成各种类型的代码来表示滤波器。例如,可以生成 C 头文件、XILINX 系数 (COE) 文件(使用 DSP System Toolbox)和 VHDL、Verilog 以及测试平台(使用 Filter Design HDL Coder™)。
其他功能
滤波器设计工具还集成了下列其他 MathWorks™ 产品提供的附加功能:
-
DSP System Toolbox - 增加高级 FIR 和 IIR 设计方法(例如滤波器变换、多速率滤波器),并为滤波器生成等效模块
-
Embedded Coder™ - 为 Texas Instruments C6000 处理器生成、编译和部署代码
-
Filter Design HDL Coder - 为定点滤波器生成可合成的 VHDL 或 Verilog 代码
-
Simulink® - 从原子 Simulink 模块生成滤波器