用MATLAB设计FIR滤波器的方法

摘  要 介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法、FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的性能。

关键词  MATLAB,数字滤波器,有限冲激响应,窗函数,仿真

1 前言

数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。

2 FIR滤波器的窗函数设计法

FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:

(1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。

(2) 由性能指标确定窗函数W(n)和窗口长度N。

(3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量b(n)。

(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 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=fir1(n,[w1 w2],window);使用标准频率响应的加窗设计函数fir1

freqz(b,1,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);%对信号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,接着在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模块,输入信号为s(t)=sin(10πt)+sin(30πt)+sin(60πt),生成的仿真图和滤波效果如图2所示。

(1)Simulink仿真图                                         (2)滤波前后的离散波形

图2 Simulink仿真图和滤波效果图

5 SPTool设计法

SPTool是MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览。在本例中按以下步骤完成滤波器的设计和滤波:

创建并导入信号源。

在MATLAB命令窗口输入命令:

Fs=100;t = (0:100)/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、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 滤波前后的时域波形和频域特性

由图4可以看出,带通滤波器filt1使输入信号s中频率为15hz的正弦波信号通过,而将频率为5hz和30hz的正弦波信号大大衰减。

6 结束语

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

参考文献:

1  董长虹等. MATLAB信号处理与应用.北京:国防工业出版社,2005

2  [美] M.H.海因斯 著,张建华等 译.数字信号处理.北京:科学出版社,2002

3  张葛祥,李 娜. MATLAB仿真技术与应用.北京:清华大学出版社,2003

4  楼顺天,李博菡.基于MATLAB的系统分析与设计.西安:西安电子科技大学出版社,1998

fir fpga 不同截止频率_用MATLAB设计FIR滤波器的方法相关推荐

  1. fir fpga 不同截止频率_一种新的FIR滤波器系数量化方法

    相对于模拟滤波器,数字滤波器具有高精度.高可靠性.可编程改变滤波特性.便于集成等一系列优点,并且理论上可实现近似理想频率特性的滤波性能.经典的数字滤波器主要包括有限脉冲响应(Finite Impuls ...

  2. fir fpga 不同截止频率_【通信篇】带你认识FIR滤波器

    一 .滤波器介绍 滤波器是一种用来减少,消除干扰的电器部件,有对特定频率的频点或该频点以外的频率信号进行有效滤除,从而实现消除干扰.获取特定频率信号的功能.数字滤波器相比模拟滤波器,有着更高的精度.信 ...

  3. fir fpga 不同截止频率_学习FPGA将来的出路在哪里?

    1. 在国内 FPGA 最大的应用市场还是通信类,几大厂商的重要收入来源还是华为.中兴.阿朗等,基本上可以直接呼叫原厂 AE 上门支持那种.算法类(如各种 FIR).接口类(如 CPRI.Interl ...

  4. matlab凯塞窗设计,转载:用MATLAB设计FIR滤波器的方法解析

    介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...

  5. 用matlab设计fir高阶滤波器,用matlab设计fir滤波器的三种方法.doc

    用matlab设计fir滤波器的三种方法.doc 用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法摘要介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法程序设计法.FDATO ...

  6. MATLAB设计FIR数字滤波器GUI界面

    MATLAB设计FIR数字滤波器GUI界面 目录 MATLAB设计FIR数字滤波器GUI界面 前言 一.GUI界面设计 1.创建工程 2.GUI界面设计 二.代码讲解 1.参数输入 2.单选按钮 3. ...

  7. matlab 设计出滤波器使用,用MATLAB设计FIR滤波器的方法解析

    介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...

  8. 使用MATLAB设计FIR低通滤波器

    ** 使用MATLAB设计FIR低通滤波器 ** 关于现代通信原理作业. https://blog.csdn.net/tanghonghanhaoli/article/details/10053358 ...

  9. 用MATLAB设计FIR数字滤波器实验,基于Matlab的FIR数字滤波器设计

    摘要:提出FIR敷字滤波器的设计方案,并基于Matlab实现滤波仿真.通过使用Matlab信号处理工具箱提供的函数,选择适当的窗函数编写程序,其中窗函数按照实际信号的处理需求,参数折中选择.实验获得了 ...

最新文章

  1. wkhtmltopdf:wkhtmltopdf(将html转换成pdf的利器)简介、安装、使用方法详细攻略
  2. spring suite tool 添加namespace时只有bean一个
  3. centos mysql下载64位_CentOS7 64位安装mysql教程
  4. PG git pull
  5. C语言学习及应用笔记之六:C语言extern关键字及其使用
  6. linux 下 eclipse 开发环境的搭建
  7. Java基础学习总结(126)——Log4j2.xml生产环境实用配置
  8. node php go python_PHP 可能在未来十年内消失?
  9. 学习完windows网络编程第一章后做的UDPTest程序
  10. 苹果mac快速切换工具:One Switch
  11. 【单目标优化求解】基于matlab改进的遗传算法求解单目标优化问题【含Matlab源码 1834期】
  12. 【系统分析师之路】2011年系统分析师上午综合知识真题
  13. 浅谈交换机和路由器的区别
  14. 服务器抓不到mrcp协议,MRCP协议学习笔记-语音识别资源的概括和全部Methods
  15. android九宫格切图,拼图九宫格切图app
  16. android 热更新 方案,与Android热更新方案Amigo的初次接触
  17. openwrt 格式化_OPENWRT路由固件入门食用教程S2:磁盘挂载及分区,网络共享,脱机下载。...
  18. 新人运营从0到1怎么做公众号?3000字干货看明白逻辑
  19. 语音唤醒 mycroft-precise使用记录
  20. Google log 日志文件

热门文章

  1. 游戏陪玩系统源码,陪玩APP开发系统自动化代码实践
  2. 关于nodejs DeprecationWarning: current URL string parser is deprecated, and will be removed in a futur
  3. 应收账款融资的典型形式及其风险防范(信贷员必备)
  4. Spring Cloud实战训练营 | 深圳站
  5. 你知道怎么查看微信绑定了哪些软件吗
  6. 翰林网上阅卷系统 共享资源在行动
  7. Atik工业相机应用案例研究——涡轮叶片氧化铝检测成像系统
  8. 推荐一款美容美发小程序
  9. 福师计算机原理与接口技术期末考试a卷答案2014,福师1203考试批次《计算机原理与接口技术》复习题及参考答案.doc...
  10. 玩转win7/win8双系统