FIR数字滤波器的MATLAB设计与实现 - 图文 下载本文

的2倍减1就是?的长度。

用最优等波动法设计FIR数字滤波器的示例

指标:fs?2000Hz,通带截频0.3?,0.6? 阻带截频0.2?,0.7?,

Rp?40dB

通带波纹0.1710,阻带波纹0.01

用remez函数设计一个等波纹FIR带通滤波器,程序见附录中的(4),图像见图4-8、图4-9、图4-10。

图4-8 滤波器的增益响应

图4-9 信号滤波前时域和频域图

18

图4-10 信号滤波后时域和频域图

对比信号滤波前后的时域和频域图,发现信号滤波前是经四个不同的信号叠加而成的,经过滤波器滤波后,去除干扰信号,得到所需的信号。

4.4 在MATLAB上设计与实现FIR数字滤波器

打开MATLAB,除了许多的滤波器设计函数外,FDATool(由Toolbox提供)是一个操作简单、应用方便快捷且灵活的滤波器设计工具。用户可以通过给定的滤波器参数和设计要求,然后使用FDATool设计界面直接对滤波器进行设计。

4.4.1 FDATool工具

在命令窗口中输入:fdatool,将弹出一个默认界面,是关于FDATool设计及分析滤波器的界面。

在滤波器设计参数的指定区域内,根据给定指标和设计思路选择Filter Type和Design Method、输入Filter Order和各种频率参数等等。

完成各种设置后,单击“Design Filter”,MATLAB将按照设置的参数和要求自动设计出所需的滤波器。完成设计后,该滤波器的幅频响应曲线将绘制在原界面的“Filter Specifications”区域,该区域的名字也会改为“Magnitude Response”。

4.4.2 FDATool对滤波器进行分析

单击滤波器分析工具栏中的“单击滤波器分析工具栏中的“

”按钮,将得到滤波器的幅频响应曲线。 ”按钮,将得到滤波器的相频响应曲线。

19

单击滤波器分析工具栏中的“曲线。

单击滤波器分析工具栏中的“单击滤波器分析工具栏中的“单击滤波器分析工具栏中的“单击滤波器分析工具栏中的“单击滤波器分析工具栏中的“

”按钮,将得到滤波器的群延迟。 ”按钮,将得到滤波器的冲击响应。 ”按钮,将得到滤波器的阶跃响应。 ”按钮,将得到滤波器的零极点图。 ”按钮,将得到滤波器的传递函数系数。

”按钮,将同时显示出滤波器的幅频响应和相频响应

单击滤波器响应曲线中的点,用户可以根据系统弹出的小方框了解该点信息。

4.4.3 数字滤波器的实现

(1)切换滤波器的实现结构

滤波器在实现前要先考虑它的实现结构是否符合要求。点击菜单中的“Edit”,再点击“Convert Structure”,系统会弹出一个窗口,用户可以选择切换滤波器的实现结构。

(2)导出滤波器设计参数

点击菜单中的“File”,选择“Export”,在弹出窗口“Export To”下拉列表可以选择导出滤波器设计参数到文本文件(Text-file)、工作空间(Workspace)或mat文件(MAT-file)。其实就是导出滤波器设计的描述参数。点击主菜单“File”,再点击“Export to C Header file”,即可将滤波器的设计参数导出到C语言的头文件中。

(3)把设计滤波器转换为一个Simulink模块

若计算机安装了DSP Blockset模块,单击FDATool界面中的“设计参数区域变为滤波器的实现参数区域。

点击“Model”选择里面的“Desrination”,要新建一个模型就在下拉列表中选择“New model”,并让滤波器在该模型中实现。在“Block name”内输入该滤波器的名字。设置完参数后,单击“Reaze Model”,MATLAB会将设计的数字滤波器制作成新建模型中的一个模块。

(4)在Simulink中进行仿真

在MATLAB的命令窗口中输入:Simulink,系统将弹出一个默认界面,在主菜单“File”/“New”/“Model”新建一个工作区。在该界面内放入系统所需的模块,连好线后可以进行运行仿真。

20

”后,将滤波器的

在Simulink上设计并实现一个带通滤波器示例 指标:fs?2000Hz,通带截止频率:19~22Hz 阻带截止频率:15~26Hz,

Rp?20dB

在Simulink中设计的系统如图5-1,信号滤波的时域图如图5-2。

图5-1 Simulink中设计带通滤波器的系统图

图5-2 信号滤波前后的时域图

对比信号滤波前后的时域和频域图,发现信号滤波前是经三个不同的信号叠加而成的,经过滤波器滤波后,去除干扰信号,得到所需的信号。

21