用MATLAB设计FIR滤波器的方法

发布者:浅唱清风最新更新时间:2012-02-11 关键字: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滤波器,实用性较强。

关键字:MATLAB  fir 引用地址:用MATLAB设计FIR滤波器的方法

上一篇:用matlab来实现fpga功能的设计
下一篇:用matlab设计的IIR滤波器源程序-IIR一阶低通/高通

推荐阅读最新更新时间:2024-05-02 21:54

在Labview中调用M文件(Matlab文件)
使用 NI LabVIEW,不论您是在开发算法、分析结果、处理信号,还是在探索 DSP 概念,您都可以自由选择用于工程计算的语法规则。您可以将直观的 LabVIEW 图形化数据流编程与 MathScript 相结合,MathScript 是一款面向数学、基于文本的编程语言,包括 600 多种常用的数学、信号处理和分析函数。 什么是 MathScript LabVIEW MathScript 将面向数学的文本编程加入到了 LabVIEW 中。MathScript 提供了除图形化数据流编程以外的另一种自定义开发应用系统的方法。现在使用 LabVIEW,您可以选择文本编程方式、图形化方式或是两者的组合。不论您是在开发
[测试测量]
MATHWORKS 新添功能,加速了使用 MATLAB 和 SIMULINK 进行的无线通信和雷达设计
中国北京,2013 年 4 月22 日——MathWorks宣布,显著加强了通过 MATLAB 和 Simulink 进行的无线通讯和雷达设计的支持。Release 2013a (R2013a) Phased Array System Toolbox 和 SimRF两个产品的新功能将使无线通讯和雷达设计人员能够更快地在 MATLAB 和 Simulink 类似环境中的建模和仿真。 Phased Array System Toolbox 的极化、阵列扰动和宽带阵列等新功能可帮助用户对端到端相控阵列系统进行建模或处理采集到的雷达数据。SimRF 推出一个新型电路包络分析解算器,可加速系统仿真和缩短模型加载时间;SimRF还扩展了用于
[测试测量]
基于龙伯格观测器Luenberger的无感控制+Matlab/Simulink仿真
前言 本章节采用龙伯格观测器进行永磁同步电机的无传感器控制,首先分析了龙伯格观测器的原理,然后设计了PMSM的全阶龙伯格观测器,最后通过Matlab/Simulink对该观测器方案进行仿真分析,为了进行对比分析在Matlab/Simulink中也搭建了基于MICROCHIP AN2950的低阶龙伯格观测器。 一、龙伯格观测器 1.1.龙伯格观测器的原理 上一章节分析了滑膜观测器,并引入了状态观测器的概念。介绍了什么是状态观测器,并对状态观测器增加反馈,通过反馈来不断的修正状态观测器的输出,使状态观测器尽可能的接近真实电机,如下图所示: 反馈方式与修正方式的不同产生了不同种类的状态观测器。 现代控制理论中实际系统的状态空间表
[嵌入式]
基于龙伯格观测器Luenberger的无感控制+<font color='red'>Matlab</font>/Simulink仿真
基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计
1 、引 言 在石油钻井中,准确测量井眼姿态是进行井眼轨迹控制的前提。为此,本文充分结合单片机和MATLAB的优点,基于事件驱动的通信机制,提出了一种MATLAB环境下基于GUI的PC与片上系统C8051F060实时串行通信的可视化数据处理方法,并实现了对井眼姿态的监测。该方法极大地简化了开发流程,提高了系统开发效率。更重要的是MATLAB的运算能力,为数据处理提供了保障。 2 、系统介绍 在本系统中,上位机是PC,下位机采用silabs公司推出的高速片上系统(SoC)C8051F060,使用三轴加速度计来敏感井眼姿态的变化。三轴加速度计两两正交,输出正方向满足右手螺旋法则,将三轴加速度的输出值通过坐标间的相互转换,利用三角关
[单片机]
基于<font color='red'>MATLAB</font>环境下采用C8051F060实现钻井井眼姿态监测系统的设计
ML4835复合PFC/CFL小型荧光灯基于Matlab的电
摘要:介绍了一种使用Matlab仿真电力电子电路的一般性方法。该方法可以得出电力电子电路的大信号非线性仿真模型,为电力电子电路的仿真研究提供了一种方便、快捷的手段。 关键词:仿真非线性模型Matlab 1前言 Matlab软件应用广泛,特别是它的可开发的Simulink工具箱给各行业的工程技术人员提供了便捷的实验手段。对于电力电子拓扑,由于它的非线性可以使用Simulink中的开关模拟,因此通过分段分析电路拓扑,然后使用开关来切换各段电路就可以得出一个完整的电路的仿真模型。本文以Sheppard?Taylor拓扑 为例叙述其实现方法及应注意的问题,最后给出结论。 2建立非线性仿真模型的一般性规则 在电力电子电路中通常
[电源管理]
ML4835复合PFC/CFL小型荧光灯基于<font color='red'>Matlab</font>的电
MATLAB GUI的数字信号处理仿真平台的设计
1.引言 数字信号处理,是现今应用成效最显着、应用领域最广的新科学之一,国内外各高校均开设了数字信号处理课程。这门课程相应的特点是:公式特别多、性质的推导复杂繁琐、概念性的东西比较多,还需要以信号与系统等诸多课程为基础,被很多同学认为大学最难的课程之一,学生因跟不上老师的进度和本身对学习内容的理解不到位而对这门课程失去兴趣。传统的教学模式已经远远满足不了新时代教学的需求,在计算机技术快速发展的今天,计算机辅助教学己经逐步成为教师授课的主要方式。 MATLAB 为数字信号处理课程的教学提供了很大的实验帮助。很早之前,国外就开始把交互式软件 MATLAB 用于数字信号处理的教学中,并采用功能强大的系统开发平台。本文利用MATLA
[电源管理]
<font color='red'>MATLAB</font> GUI的数字信号处理仿真平台的设计
基于Matlab的高频开关电源功率因数测量电路研究
0 引言 高频开关电源的功率因数是非常重要的一个参数,直接决定着产品是否符合通用的谐波标准,衡量着产品的优劣。为了减小谐波、提高功率因数,高频开关电源普遍采用了功率因数校正电路来改善电流波形。为了在设计阶段就了解高频开关电源的功率因数值,方便进行功率因数校正电路参数的优化,就需要进行功率因数的测量。本文基于Matlab仿真软件设计并给出了两种功率因数测量的电路,用这两种电路对RC正弦电路进行了功率因数仿真测量和计算验证;并把这两种仿真测量电路应用于三相大功率恒流充电电源的功率因数仿真测量中,最后通过实验验证了其可靠性。 1 功率因数的定义 功率因数用于衡量输入有功功率与输入视在功率中的比例,用公式表示为: 功率因数
[电源管理]
FIR滤波器
FIR(FiniteImpulseResponse)滤波器,全称为有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件。它可以在保证任意幅频特性下,同时具有严格的线性相频特性,且其单位抽样响应是有限长的,故滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。 工作原理 在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足 香农采样定理 ,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器, 滤
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved