用Matlab设计FIR滤波器的三种方法

上传人:汽*** 文档编号:561684965 上传时间:2023-04-13 格式:DOCX 页数:5 大小:215.22KB
返回 下载 相关 举报
用Matlab设计FIR滤波器的三种方法_第1页
第1页 / 共5页
用Matlab设计FIR滤波器的三种方法_第2页
第2页 / 共5页
用Matlab设计FIR滤波器的三种方法_第3页
第3页 / 共5页
用Matlab设计FIR滤波器的三种方法_第4页
第4页 / 共5页
用Matlab设计FIR滤波器的三种方法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《用Matlab设计FIR滤波器的三种方法》由会员分享,可在线阅读,更多相关《用Matlab设计FIR滤波器的三种方法(5页珍藏版)》请在金锄头文库上搜索。

1、用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法摘要介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计 法、FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到 一个混和正弦波信号,以验证滤波器的性能。关键词MATLAB,数字滤波器,有限冲激响应,窗函数,仿真1前言数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来 达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR的实现是非递归 的,总是稳定的;更重

2、要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的 线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物 医学等领域得到广泛应用。2 FIR滤波器的窗函数设计法FIR滤波器的设计方法有许多种,如窗函数设计法、频率采 样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲 响应序列获得有限长的脉冲响应序列,主要设计步骤为:(1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。2月帘(冷一席)(2) 由性能指标确定窗函数W(n)和窗口长度N。(3) 求得实际滤波器的单位脉冲响应h(n),h(n)即为所设计FIR滤波器系数向量b(

3、n)。 沁:沁=hd (町 W 5、(4) 检验滤波器性能。本文将针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波 器,给出利用MATLAB实现的三种方法:程序设计法、FDATool设计法和SPTool设计 法。参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10 Hz,通带上限截止频率 fc2=20 Hz,过渡带宽6 Hz,通阻带波动0.01,采用凯塞窗设计。2程序设计法MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。本文 的带通滤波器设计及滤波程序如下:n,Wn,beta,ftype=kaiserord(7 13 17

4、23,0 1 0,0.01 0.01 0.01,100);%得出滤波器的阶数n=38, beta=3.4 w1=2*fc1/fs; w2=2*fc2/fs;%将模拟滤波器的技术指标转换为数字滤波器的技术指标 window=kaiser(n+1,beta);%使用 kaiser 窗函数b=firl(n,wl w2,window);使用标准频率响应的加窗设计函数firl freqz(b,l,512);%数字滤波器频率响应t = (0:100)/Fs;s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%混和正弦波信号 sf = filter(b,1,s)

5、;%对信号s进行滤波程序执行的结果如图1所示:(1)滤波器幅频特性和相频特性(2)滤波前后的波形图1滤波器特性和滤波效果图4 FDATool设计法FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱专用的滤波器设计分 析工具,操作简单、灵活,可以采用多种方法设计FIR和IIR滤波器。在MATLAB命令窗 口输入FDATool后回车就会弹出FDATool界面。4.1带通滤波器设计已知滤波器的阶数n=38, beta=3.4。本例中,首先在Filter Type中选择Bandpass;在 Design Method选项中选择FIR Window,

6、接着在 Window选项中选取Kaiser, Beta值为 3.4;指定Filter Order项中的Specify order为38;采样频率Fs=100Hz,截止频率 Fc1=10Hz,Fc2=20Hz。设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设 计滤波器的幅频响应,通过菜单选项Analysis还可以看到滤波器的相频响应、组延迟、脉 冲响应、阶跃响应、零极点配置等。设计完成后将结果保存为kaiser15.fda文件。4.2 Simulink 仿真在Simulink环境下,将滤波器文件kaiser15.fda导入Digital Filter Design模块,

7、输入信号 为s(t)=sin(10n t)+sin(30n t)+s生成的仿真图和滤波效果如图2所示。S?P启inm in e WaveJGPSine Wdixiel1 50WWW0.5-111.5DigitalFilter Desi gn0.5ScopelFDAToolScope(2)滤波前后的离散波形(1) Simulink 仿真图图2 Simulink仿真图和滤波效果图5 SPToo 1设计法SPTool是MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号 处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和 浏览。在本例中按以下步骤完成滤波

8、器的设计和滤波: 创建并导入信号源。在MATLAB命令窗口输入命令:Fs=lOO; t = (O:lOO)/Fs;s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);此时,变量Fs、t、s将显示在workspace列表中。在命令窗口键入Sptool,将弹出Sptool 主界面,如图3所示;点击菜单File/Import将信号s导入并取名为s。(2)单击Filters列表下的New,按照参数要求设计出滤波器filt1,具体步骤类似于3.2.1。(3) 将滤波器filt1应用到s信号序列。分别在Signals、Filters、Spectra列表中选择s、

9、 filt1、mtlbse,单击Filters列表下的Apply按钮,在弹出的Apply Filter对话框中将输出信 号命名为sin15hz。(4) 进行频谱分析。在Signals中选择s,单击Spectra下的Create按钮,在弹出的 Spectra Viewer界面中选择Method为FFT, Nfft=512,单击Apply按钮生成s的频谱 spect1。同样的步骤可以生成信号sin15hz的频谱spect2。分别选中信号s、sin15hz、spect1、spect2,单击各自列表下方的View按钮,即可观察他 们的波形,如图4所示。图3 SPTool主界面图4滤波前后的时域波形和频

10、域特性由图4可以看出,带通滤波器filtl使输入信号s中频率为15hz的正弦波信号通过,而将 频率为5hz和30hz的正弦波信号大大衰减。6结束语本文通过一个设计实例,介绍了利用MATLAB实现FIR滤波器设计与滤波的三种方 法,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻 了工作量。滤波器的设计工作完成后,可以借助于MATLAB的export操作导出所设计滤 波器的系统函数H(z)。由于MATLAB具有强大的接口功能,仿真后的结果可以很方便的 移植到DSP、CPLD或FPGA等器件中。在实际应用中,只需按要求修改滤波器参数,并对程 序作较少的改动,即可实现不同截止频率的FIR滤波器,实用性较强。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号