基于图形可视化Wintool和FDAtool的FIR滤波器设计
   来源:现代电子技术     2021年01月31日 15:57

燕丽红 张乐芳 马小青

摘 要: 在大数据背景时代下,数据处理工具显得尤为重要,其中Matlab就是数据处理的一种有效的分析工具。Matlab具有强大的函数功能,可以通过编写M文件进行滤波器设计,同时可以通过图形可视化工具FDAtool和WINtool对系统阶次、窗函数类型、采样频率等参数的设置来设计系统。在可视化界面中可以很快捷地得到系统频谱图和时域特性图,便于用户进行系统稳定性分析,还可以将系统参数导出并保存为其他可处理的格式,从而方便用户在其他平台进一步进行系统设计和开发。

关键词: 滤波器设计; FDAtool; WINtool; 窗函数类型

中图分类号: TN911?34; G642 文献标识码: A 文章编号: 1004?373X(2015)24?0004?03

Design of FIR filter based on graph visualization Wintool and FDAtool

YAN Lihong, ZHANG Lefang, MA Xiaoqing

(College of Information Engineering, Xian Eurasia University, Xian 710065, China)

Abstract: In the background of big data, the data processing tool becomes particularly important, in which Matlab is an effective analysis tool. Matlab has powerful function performance, and can used to design the filter by compiling M?file. The configuration of system order, window function type and sampling frequency is conducted by graph visualization FDAtool and WINtool in Matlab toolbox to design the system. The system spectrogram and time?domain characteristic diagram can be quickly obtained in visual interface, which is easy for users to analyze system stability. The system parameters can be derived and saved as other processable formats, which is convenient for customers to further design and develop the system in other platforms.

Keywords: filter design; FDAtool; Wintool; window function type

信号处理中最主要的应用就是滤波器设计,其设计的好坏关乎系统的可用性。而滤波器设计的目的是要进行数据序列的频率改变,可通过设置采样频率进行相应频率成分信号的提取,或设计具有某一特定的通带波纹(Passband Ripple)、阻带衰减(Stopped Attennation)或暂态宽度(Transition Width)的滤波器。为了能更好地设计符合指标的滤波器,可采用Matlab中的函数进行编写,也可以采用图形可视化工具进行设计。本文主要讲述使用FDAtool和Wintool可视化工具进行FIR滤波器的设计,该设计方法具有直观、简单的效果。

1 FIR滤波器设计原理

假设离散线性系统的输入序列与输出序列分别为x(n),y(n),则可以用以下方程表述输入输出之间的关系[1?2]:

[y(n)=i=0Mbix(n-i)-i=1Naiy(n-i)] (1)

通过对式(1)进行z变换,则有系统函数:

[H(z)=Y(z)X(z)=i=0Mbiz-i1+i=1Naiz-i] (2)

设计数字滤波器也就是设计H(z)表达式中的各项系数[ai,bi]。当H(z)表达式中分母上的各项系数均等于零时,即为有限脉冲响应FIR滤波器,则式(2)变为:

[H(z)=i=0Mbiz-i] (3)

通常在设计滤波器时是通过给定的指标去逼近理想的滤波器,理想(或称为“brick wall”)的离散低通滤波器[3?4]的截止频率设为ω0,在频率小于ω0时的大小为1,在频率从ω0到π的大小为0,其脉冲响应序列h(n)为:

[hn=12π-ππHωejωndω=12π-ω0ω0ejωndω=ω0πsinc(ω0πn)] (4)

其脉冲响应具有无限性及非因果性,为建立一个有限区间的脉冲响应即可实现的系统,可采用不同的窗函数将其截断处理。

在FIR滤波器设计过程中,由于滤波器具有精确的线性相位、系统稳定、设计方法为线性而且系统能够有效地在硬件中得以实现等优势。在实际工程处理中,一般采用加窗截断处理的方法来保留脉冲响应的中心部分,得到线性相位的滤波器。

在数字滤波器设计中窗函数的主要角色是要减弱因为截断无限信号引起的影响。Matlab信号处理工具箱提供了16个窗函数[5],常用的函数如表1所示。

表1 常用窗函数及其对应的Matlab函数

2 FIR滤波器的加窗截断处理设计

2.1 直接处理

创建一个31阶次,低通截止频率ω0为0.2 rad/s的滤波器,其程序为:

b2=0.2*sinc(0.2*(-15:15));

b3=b2.*hamming(31)′;

fvtool(b2,1,b3,1); %绘制频率响应

图1为窗函数设计的低通滤波器示意图。由图1可知,直接采用简单的矩形窗设计时,由于矩形窗对信号突然截断的缘故,在通带及阻带的边缘很明显产生了“Gibbs”效应[6],随着滤波器长度的增加,这种现象也不会消失。但在实验过程中,同时采用了非矩形窗设计,即在时域乘上窗函数,利用频域卷积定理,有时域乘积等于频域卷积,则对同样滤波器应用长度为31的Hamming窗进行处理后,可以看出处理后大大减小了波纹。

图1 窗函数设计的低通滤波器示意图

2.2 函数处理

FIR1函数[7]可实现加窗线性相位FIR数字滤波器的设计,其格式有:

B = FIR1(N,Wn)

%设计一个N阶低通FIR数字滤波器,其中0

B = FIR1(N,Wn,′high′)

%设计一个N阶高通FIR数字滤波器

B = FIR1(N,Wn,′bandpass′)

%设计一个N阶带通FIR数字滤波器,其中Wn=[W1 W2]

B = FIR1(N,Wn,′stop′)

%设计一个N阶带阻FIR数字滤波器,其中Wn=[W1 W2]

如果Wn是一个多元矩阵,即Wn=[W1 W2,…,Wn],当

B = FIR1(N,Wn,′DC?1′)

%使得多带滤波器的第1带为通带

B = FIR1(N,Wn,′DC?0′)

%使得多带滤波器的第1带为阻带

B = FIR1(N,Wn,WIN) %设计指定窗的滤波器

其中向量Window必须是N+1个元素长度,如果没有设定窗函数,则FIR1函数使用长度为N+1的Hamming窗,如:

B=FIR1(N,Wn,kaiser(N+1,4)) %设定凯瑟窗

采用FIR1函数设计一具有截断频率为0.2的Hamming窗低通线性相位31阶的滤波器,则:

n=31;

Wn=0.2;

b=fir1(n,wn);

freqz(b,1,512); %绘制频谱图

图2为使用FIRl函数设计的滤波器。通过图1,图2可以看出,使用非矩形窗设计和直接使用FIR1函数进行Hamming滤波器设计的结果一致。

3 FIR滤波器的图形可视化设计

3.1 FDAtool的FIR滤波器设计

FDAtool(Filter Design &Analysis tool)是Matlab信号处理工具箱里专用的滤波器设计分析工具[8?9],它操作简单,可用于设计及分析滤波器。在Matlab命令窗口中输入fdatool,即可打开FDAtool界面,其下半部为design filter,用来设置滤波器的设计参数,包括滤波器的类型、设计方法、窗函数规格、频率特性、幅度特性及滤波器的阶次等内容,上半部分为频谱特性或时域特性的显示区。

图2 使用FIR1函数设计的滤波器

打开FDAtool界面,设置响应的参数后,选择FDAtool的菜单“Analysis”→“Magnitude Response”,则可得到对应的幅度谱图,如图3所示。

图3 FDAtool的Hamming窗设计幅度图

与以上设置一样,当选择菜单“Analysis”→“Phase Response”启动相频响应分析,如图4所示。

图4 FDAtool的Hamming窗设计相位图

由图4可以看到设计的FIR滤波器在通带内其相位响应为线性的,即该滤波器是一个线性相位的滤波器。同时在FDAtool中还可以很直观地显示滤波器幅频特性与相频特性的比较,即可以通过菜单“Analysis”→“Magnitude and Phase Response”启动分析,如图5所示。

图5 FDAtool的Hamming窗设计幅度和相位图

在FDAtool可以很容易得到该滤波器的时域特性图,只需通过菜单“Analysis”→“Impulse Response”启动分析,如图6所示。

图6 FDAtool的Hamming窗设计时域特性频谱图

3.2 WINtool的FIR滤波器设计

WINtool是信号处理工具箱提供的图形界面工具[10],如图7所示。可以通过设置常用的窗函数进行滤波器的设计,能方便快捷地得到滤波器的时域特性和频域特性。

图7 窗函数的设计及分析工具(WINtool)

通过以上工具的使用,可以看出在进行滤波器设计过程中采用图形分析工具更快速、便捷,同时在实际设计中方便将滤波器的参数数据进行导出和处理,也可与外部接口C语言链接和数据处理,可与DSP开发板链接和系统分析。

4 结 语

Matlab不但具有强大的函数库,同时还具有可视化图形工具。其可以通过函数文件编写代码进行滤波器设计,也可以通过人机交互界面进行信号处理,用户可以更快捷、简单地通过给定指标设计相应的系统,有效地提高了数据处理和系统分析的过程。在图形可视化界面设计过程中,还可以将其设计的滤波器系统保存为.txt文件,从而方便在其他平台上进行数据处理和分析。这将对用户使用DSP处理器进行系统设计带来很大的便利,也将成为用户在工程应用上的一个有效的数据分析工具。

参考文献

[1] 严慧.“数字信号处理”教学方法的探讨[J].科技创新导报,2011(2):129?130.

[2] 高西全,丁玉美.数字信号处理[M].3版.西安:西安电子科技大学出版社,2008.

[3] 马月红,马彦恒,王雪飞.基于Matlab的FIR数字滤波器设计与仿真[J].电子测量技术,2010,11(33):66?69.

[4] 郭德才.基于Matlab的FIR低通滤波器的设计与仿真[J].通化师范学院学报,2009,30(8):35?37.

[5] 邬晓红,唐红军,赵琳,等.基于Matlab GUI的说话人识别测试平台设计[J].现代电子技术,2013,36(8):59?62.

[6] 李京秀.基于Matlab GUI的电路特性演示平台设计[J].现代电子技术,2012,35(22):160?162.

[7] 陈瑞峰,左曙光,郭伟.基于Matlab GUI 的信号分析系统[J].佳木斯大学学报,2009,27(5):645?647.

[8] 何淮淼,毕睿华,林琦.基于Matlab/FDATool的电力系统数字滤波器的设计与实现[J].南京工程学院学报:自然科学版,2011,12(4):28?31.

[9] 施琴红,赵明镜.基于Matlab/FDATOOL工具箱的IIR数字滤波器的设计及仿真[J].科技广场,2010(7):56?58.

[10] 罗华强.讯号处理:Matlab的应用[M].台北:全华科技图书股份有限公司,2008.

滤波器 文章 函数