- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于Matlab的FIR数字滤波器设计
提出FIR敷字滤波器的设计方案,并基于Matlab实现滤波仿真。通过使用Matlab信号处理工具箱提供的函数,选择适当的窗函数编写程序,其中窗函数按照实际信号的处理需求,参数折中选择。实验获得了比较理想的滤波器特性,可以实现较好的滤波作用。而且在实际应用中只需按需求修改滤波器参数,并结合程序的相应改动,即可实现不同功能的滤波器。另外,介绍了利用FDATool设计滤波器的方法,简单修改参数即可实现多种滤波器。
数字滤波器可以过滤时间离散信号,通过对抽样数据进行数字处理来达到频域滤波的目的,目前已经广泛应用在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域。由于计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现。借助Mathb强大的数据处理能力,灵活使用模块集和工具箱,可以按照需求编写程序来实现多种滤波器设计。伴随Matlab的不断发展以及工具箱的不断开发,工作平台的改善,使用Mathb的编程工作量会大大减少。Matlab提供了完整的联机查询、帮助系统,提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。而这也使得基于Matlab的设计变得方便易于使用。
1 数字滤波器及设计方案
应用数字滤波器处理模拟信号时,首先要对输入模拟信号进行限带、抽样和模/数转换,数字滤波器输入信号的抽样率应大于被处理信号带竟的两倍,其频率响应具有以抽样频率为间隔的周期重复特性,且以折叠频率即1/2抽样频率点呈镜像对称。滤波器的输出信号须经数/模转换、平滑处理。
FIR数字滤波器的输出值u(Kt)与输出的过去值u(Kt-kt)表达关系如下:
这是不断乘累加的过程,解决了滤波器的系数α问题,再加上乘法和加法计算即可实现滤波器设计。由于FIR滤波器的单位脉冲响应h(n)是有限长序列,因此滤波器没有不稳定的问题,FIR滤波器一般为非递归结构,因此在采用Matlab设计时采用有限精度的计算,以避免出现递归结构中极性震荡等不稳定现象。常见的两种FIR滤波器设计方法是窗函数法和频率采样法。虽然频率采样法可以精确控制采样点的频率响应,但是设计中必须插入过渡点来改善纹波,而且截止频率不易控制,过渡点也需要进一步的优化,对比来看窗函数法则是一种基本的设计理念,设计方法比较成熟。并且Matlab中提供的函数可以方便地实现加窗线性相位FIR滤波器设计,包括了比较常见的低通、带通、高通和带阻数字滤波器。本文采用的是窗函数结合编程的设计方法。
窗函数法的基本思想是先给定理想的滤波器频响为,
式中:ωc为截止频率;α为采样延迟。
而所要求设计的频响为,之后的工作便是使逼近。加窗w(n)对理想滤波器的单位抽样响应hd(n)(见式(3))截断,得到所要设计的h(n)。
对于FDATool设计法,本文通过选择适当参数,利用Matlab完成。
2 FIR数字滤波器设计
2.1 窗函数法设计FIR滤波器方案
在Matlab中可直接产生窗函数:矩形窗(Rectangle Window),三角窗(Triangular Window),汉宁窗(Hanging Window),凯塞窗(Kaiser Window)等,通过调用系统的函数即可实现窗的加载。具体调用方法如下:调用格式:w=函数名(n),根据长度n产生一个矩形窗w。一般正常的心电信号频率范围在0.05~100 Hz之内,这本身就是一种比较微弱的电信号,当受到身体其他器官的干扰信号后,心电信号将会严重失真。另外还要考虑到电子器件噪声和50 Hz的工频信号的存在。这就需要尽量消除噪声和干扰的影响。这里选取低通滤波器的设计指标为:通带截止频率ωp=0.2π,阻带截止频率ωs=0.3π,最小阻带衰减As≥50 dB。所以得出过渡带宽tr_width=ωs-ωp,列长N=10 π/tr_width。选择窗函数一般是选择主瓣较宽的,这样可以增加阻带的衰减,保证了通带的平稳,另外在保证阻带最小衰减指标的情况下,适当增加列长N值,窄化过渡带。根据窗函数最小阻带衰减的特性。只有海明窗和凯塞窗可提供大于50 dB的衰减。实际应用中选用窗函数大多是它们的折中,凯塞窗可以通过改变参数值来折中选择主瓣宽度和旁瓣衰减,基于此的滤波器适应能力强且比较灵活。本文即是采用的凯塞窗编程设计。窗函数设计法是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,设计步骤为:
(1)通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。
(2)由性能指标确定窗函数W(n)和窗口长度N。
(3)求得实际滤波器的单位脉冲响应h(n),h(n)即为所设计FIR滤波器系数向量a(n)。
(4)检验滤波器性能。
Matlab信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。设计中利用Matlab提供的函数firl来实现,编程则是直接调用这些函数简单直观的完成设计。调用格式:firl(n,Wn,‘ftype’,Window),其中n为阶数、Wn为截止频率、ftype是滤波器的类型、Window是窗函数。应用凯塞窗的代码如下:
程序执行的结果如图1,图2所示。
从滤波效果图看,所设计的滤波器基本消除了噪声和干扰的影响,客观的得出真实信号。按照设计方案中滤波器的指标,执行函数操作可以得到:N=68,As=59。之后增加参数N值。在该设计中,利用凯塞窗函数,执行了多种N值的改变。伴随N值增大,过渡带变窄,但阻带的最小衰减没有改变。
2.2 FDATool设计方案
FDATool(Filter Design&Analysis Too1)是Matlab信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计FIR滤波器。这种方法设计的数字滤波器,可以随时调整滤波器滤披特性,而且滤波结果实时显示在图形区,减少了工作量,有利于滤波器设计的进一步优化。在Matlab命令窗口输入FDATool后回车会弹出FDATool界面,也可在Matlab主界面下方选择"start"→"toolbox"→" filterdesign"。具体参数选择为:
(1)滤波器类型(filter type)为lowpass;
(2)设计方法(design method)为FIR,使用窗口Window;
(3)滤波器的阶数(fiter order)为15;
(4)窗口类型(Window)为Kaiser,beta为0.5;
(5)fs为48 000 Hz,fc为10 800 Hz。
点击"design filter"即可。值得注意的是,这里选择filter order为15阶,而不是所设计的16阶滤波器。因为常数系数项h(0)=0。通过菜单"analysis"选择"magnitude"和"phase response"即可得到图3,图4的特性显示。"analysis"选择"step response"和"im-pulse"可以得到图5,图6的响应显示。可以看出所设计FIR滤波器的阶跃响应和冲击响应比较接近理想状态。
3 结论
从图1~4的特性曲线中可以看出该滤波器的性能基本达到了妻求,滤波作用比较明显。曲线相对比较平稳,能够满足微弱信号滤波器的设计技术指标。特别是从方案二中的相频特性曲线来看,曲线通过原点且为一条平滑直线,说明具有良好的线性相位特性,而这也是在应用中选择FIR数字滤波器的重要原因,但是它的实际效果还要经过实践的检验。FIR幅频特性精度比IIR低,且滤波器所需阶次比较高,但是它拥有很好的线性相位,即不同频率分量的信号经过FIR滤波器后他们的时问差不变。另外,FIR还存在的缺点应加以改善,如信号的延迟偏大。这就考虑到用高性能的DSP器件,由于其处理速度快,此缺点在一点程度上是可以改善的。
4 结语
本文通过设计实例,介绍了利用Matlab实现数字信号处理中的数字滤波器设计,从结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。滤波器的设计工作完成后,可以借助Matlah的export操作导出所设计滤波器的系统函数H(x)。由于Matl-ah具有强大的接口功能,仿真后的结果可以很方便的移植到DSP,CPLD或FPGA等器件中。在实际应用中,只需按要求修改滤波器参数,并对程序作较少的改动,即可实现不同的滤波器,实用性较强。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夆€﹂悜鐣屽祦闁硅揪绠戠粈瀣亜閹烘垵鈧骞婂┑鍡╂富闁靛牆妫涙晶顒傜棯閺夎法孝闁宠绉电换婵嬪炊閵娿垺瀚藉┑鐐存尰閸╁啴宕戦幘瀵哥濞达絽鍟垮ú锕傚疾椤掑嫮鍙撻柛銉e妿閳藉鏌i幒鎴犱粵闁靛洤瀚伴獮鎺楀箣濠垫劒鎮i梻浣芥閸熶即宕伴弽顓炶摕闁哄洢鍨归柋鍥ㄧ節閸偄濮堥弫鍫ユ⒒娴e懙褰掝敄閸愵喖绀夌€广儱顦闂佸憡娲﹂崹浼村礃閳ь剟姊洪棃娑掑悍濠碘€虫搐閳绘捇濡堕崱娆戠槇闂佸啿鐨濋崑鎾绘煕閺囥劌澧版い锔垮嵆濮婃椽宕崟顓犲姽缂傚倸绉崇欢姘舵偘椤斿槈鐔煎礂閻撳孩鐎梻浣告啞濞诧箓宕㈣ぐ鎺戠劦妞ゆ巻鍋撻柨鏇ㄤ簻椤繐煤椤忓懎浠梺鍝勵槹鐎笛傜昂濠碉紕鍋戦崐鏍垂閻㈡潌鍥偨缁嬭銉ッ归敐鍛棌婵炵鍔戦弻宥堫檨闁告挾鍠栭悰顕€宕橀纰辨綂闂侀潧鐗嗛幊搴g玻濞戞瑧绡€闁汇垽娼у瓭闁诲孩鍑归崢濂稿煝閹炬椿鏁婇柛鎾楀拑绱抽梻浣呵归張顒勬嚌妤e啫鐒垫い鎺戝濡垹绱掗鑲╁缂佹鍠栭崺鈧い鎺戝閳ь兛绶氬浠嬵敇閻愭鍚呴梻浣瑰濞插秹宕戦幘鍓佺<闁绘瑢鍋撻柛銊ョ埣瀵濡搁埡鍌氫簽闂佺ǹ鏈粙鎴︻敂閿燂拷 | More...
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夆€﹂悜鐣屽祦闁硅揪绠戠粈瀣亜閹烘垵鈧骞婂┑鍡╂富闁靛牆妫涙晶顒傜棯閺夎法孝闁宠绉电换婵嬪炊閵娿垺瀚藉┑鐐存尰閸╁啴宕戦幘瀵哥濞达絽鍟垮ú锕傚疾椤掑嫮鍙撻柛銉e妿閳藉鏌i幒鎴犱粵闁靛洤瀚伴獮鎺楀箣濠垫劒鎮i梻浣芥閸熶即宕伴弽顓炶摕闁哄洢鍨归柋鍥ㄧ節閸偄濮堥弫鍫ユ⒒娴e懙褰掝敄閸愵喖绀夌€广儱顦闂佸憡娲﹂崹浼村礃閳ь剟姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨彃鍞ㄥ銈嗗姉閸犲孩绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾惧鏌i幇顒佹儓闁搞劌鍊块弻娑㈩敃閿濆棛顦ョ紓浣哄Т缂嶅﹪寮诲澶婁紶闁告洦鍓欏▍锝夋⒑缁嬭儻顫﹂柛鏃€鍨垮濠氭晲婢跺﹦鐤€闂傚倸鐗婄粙鎴﹀煕閹烘垟鏀介柣鎰皺婢ф梻绱掗鐣屾噰鐎殿喖顭锋俊鎼佸煛閸屾矮绨介梻浣呵归張顒傜矙閹达富鏁傞柨鐕傛嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸ゅ嫰鏌涢幘鑼妽闁稿繑绮撻弻娑㈩敃閿濆棛顦ラ梺姹囧€楅崑鎾舵崲濠靛顥堟繛鎴濆船閸擃參姊洪柅鐐茶嫰閸樻悂鏌i幒鐐差洭闁瑰箍鍨归埞鎴犫偓锝庝簽閸婄偤姊洪懖鈹e綊鎮樺顑芥瀺闁瑰墽绮埛鎺懨归敐鍛暈闁哥喓鍋炵换娑氭嫚瑜忛悾鐢碘偓瑙勬礃缁矂鍩ユ径鎰潊闁抽敮鍋撻柟绋垮暣濮婃椽宕ㄦ繝鍐槱闂佺ǹ绻戠粙鎾诲箲閵忋倕骞㈡繛鎴炵懅閸橆亪姊洪崜鎻掍簼缂佽鍟村畷宕囨喆閸曗晙绨婚棅顐㈡处閹搁箖骞楅悩鐫酣宕惰闊剚銇勯姀鈩冪妞ゃ垺顨嗛幏鍛村礈闊厾澶�
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夋倶濠靛鍋╅梺鍨儑闂勫嫮绱掔€n亞浠㈢€规挸妫濆铏圭磼濡搫顫嶅銈嗘⒐閻楁洖宓勫┑鐐叉▕娴滄繈鎮¢悢鍏肩厽闁哄倹瀵ч幉鎼佹煟椤撶偠瀚版い顓″劵椤﹁櫕銇勯妸銉уⅵ鐎殿噮鍋婇、姘跺焵椤掑嫮宓侀柟鐑橆殔缁秹鏌嶈閸撶喎顕i崘娴嬪牚闁割偆鍠撻崢鐢告⒑鐠団€崇仭婵犮垺枪椤e潡姊绘担铏瑰笡闁规悂绠栧畷浼村箛閺夎锕傛煕閺囥劌鐏遍柡浣稿暞閵囧嫰骞囬埡浣轰患缂備胶濮惧畷鐢垫閹惧瓨濯撮柣銈庡灠閸橈繝姊虹粙璺ㄧ闁挎洏鍨归锝嗙節濮橆厽娅滄繝銏e煐钃遍柡鍜冪秮濮婅櫣绱掑Ο鍝勵潔缂備椒鐒﹂幐鎶界嵁閹版澘绀冩い鏃囆掗幏娲⒑閼姐倕鏋戞繝銏∶嵄缂備焦菧娴滄粓鏌熺€涙ḿ绠ユ俊顖楀亾闂備胶绮笟妤呭闯閿濆宓侀悗锝庡枟閺呮繈鏌嶈閸撴稓鍒掔拠娴嬫闁靛繆妾ч幏濠氭⒑閸撴彃浜為柛鐘虫崌閸╁﹪寮撮姀锛勫幈婵犵數濮撮崐鍧楀矗閸曨剚鍙忓┑鐘插鐢盯鏌熷畡鐗堝殗闁圭厧缍婇悰顔芥償閹惧厖澹曟繝鐢靛Т濞诧箓鎮″☉銏$厱婵炴垵宕弸銈囩磼閻橀潧浠遍柡灞炬礋瀹曢亶寮撮悩鎻掝瀴缂傚倷鑳剁划顖滄崲閸繄鏆﹂柛顐f礃閸ゅ鏌涢…鎴濅簼闁绘繐绠撳濠氬磼濞嗘埈妲梺瑙勭ゴ閳ь剝绉ú顏呮櫇闁稿本鑹鹃崑宥夋⒑娴兼瑧鍒板璺烘喘瀹曟垿骞橀幇浣瑰兊濡炪倖鎸鹃崑娑㈠箺閻㈠憡鈷戦柛婵嗗濠€浼存煟閳哄﹤鐏﹂柣娑卞枛铻e〒姘煎灡鐎靛矂鏌i悩鍙夌┛鐎殿喗鎸荤粩鐔煎即閵忊檧鎷绘繛杈剧到閹诧繝骞嗛崼銉︾厽妞ゆ挾鍎愬Ο鈧Δ鐘靛仜缁绘﹢寮幘缁樻櫢闁跨噦鎷�
闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗霉閿濆牊顏犵紒鈧繝鍌楁斀闁绘ɑ褰冮埀顒€顕槐鎾愁潩鏉堛劌鏋戦梺鍝勫暙閻楀嫰鍩€椤戣法绐旂€殿喕绮欓、姗€鎮欓懠鍨涘亾閸喒鏀介柨娑樺娴犙呯磼椤曞懎鐏︾€殿噮鍋婇幃鈺冪磼濡攱瀚奸梻鍌欑贰閸嬪棝宕戝☉銏″殣妞ゆ牗绋掑▍鐘炽亜閺傛娼熷ù婊勭矋閵囧嫰骞樼捄杞版勃闂佺ǹ顑冮崕鎶藉焵椤掑喚娼愭繛鍙夌矒楠炲﹪骞樼拠鑼弨婵犮垼娉涜墝闁哄閰i弻鐔兼焽閿曗偓閺嬫稓绱掗幓鎺撳仴婵﹤顭峰畷鎺戔枎閹存繂顬夐梻浣筋嚃閸犳牠鎮ラ悡搴f殾闁圭増婢橀崡鎶芥煟韫囨凹鍤欑紓宥咃躬楠炲啫饪伴崼鐔风檮婵犮垼娉涢惌鍫ュ船閻㈠憡鈷戦悹鍥ㄥ絻閸よ京绱撳鍛棦鐎规洑鍗冲浠嬵敃閵堝嫮鐟濋梻浣告惈鐞氼偊宕曢弻銉﹀亗婵炲棗绶疯ぐ鎺撳亗閹艰揪绲鹃幉鐓庘攽閻愭潙姣嗛柛銉e妿閸橀潧顪冮妶鍡橆梿鐎规洜鏁哥划锝夊籍閳ь剟骞堥妸锔剧瘈闁告侗鍣禒鈺呮⒑閸涘﹦澧柣妤冨Т椤曪綁骞橀钘変簻闂佸憡绺块崕杈╁緤閸喒鏀介柨娑樺娴滃ジ鏌涙繝鍐ㄧ伌鐎规洜顢婇妵鎰板箳閹惧瓨鐝栨俊鐐€曠换鎰版偋閸曨垰鐒垫い鎴f硶椤︼箓鏌嶇拠鏌ュ弰妤犵偞锚閻g兘宕堕懜鏁屟冣攽閿涘嫬浜奸柛濠冪墵楠炴劖銈i崘銊х崶闁瑰吋鐣崝宥夊磻閻旇褰掓偂鎼达絾鎲奸梺鎶芥敱閸ㄥ潡寮诲☉妯锋婵鐗婇弫楣冩煟鎼达紕浠涢柣鐔叉櫊瀵顓奸崼顐n€囬梻浣告啞閹搁箖宕版惔顭戞晪闁挎繂妫涚弧鈧┑顔斤供閸樿棄鈻嶉姀銈嗏拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�
婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繐霉閸忓吋缍戦柛銊ュ€婚幉鎼佹偋閸繄鐟查梺绋匡工閻栧ジ寮诲☉銏╂晝闁绘ɑ褰冩慨搴ㄦ⒑濮瑰洤鈧宕戦幘鑸靛床婵犻潧顑嗛ˉ鍫熺箾閹存繂鑸归柛鎾插嵆濮婃椽宕ㄦ繝鍛棟缂傚倸绉撮敃顏堟偘椤曗偓瀵粙濡搁敂鍓ら梻浣告啞閹稿棝宕ラ柨瀣仸缂佺粯绻傞埢鎾诲垂椤斿彞鍝楅梻渚€娼ч悧濠囧箖閸屾凹鍤曞┑鐘崇閸嬪嫰鏌i幋鐏活亪寮搁崒鐐粹拺闁告稑锕ユ径鍕煕鐎n亜顏い銈呭€垮濠氬磼濞嗘埈妲梺纭咁嚋缁绘繂鐣峰ú顏勭妞ゆ棁鍋愰敍娑㈡⒑閻熸澘鈷旂紒顕呭灦閹繝鎮㈤悡搴n啇濠电儑缍嗛崜娆撳焵椤戞儳鈧洖鐜婚崸妤€绠涢柣妤€鐗忛崢闈涱渻閵堝棙顥嗛柛瀣姍瀹曟椽鏁愰崶锝呬壕閻熸瑥瀚粈鍐╃箾閼碱剙鏋涢柣娑卞枟閹棃濡搁敃鈧惂鍕節閵忥絾纭鹃柤娲诲灦閻涱噣骞掑Δ浣叉嫽婵炶揪绲挎灙闁诡喗鍨圭槐鎺撴媴鐟欏嫬鍞夐悗娈垮枟瑜板啴銈导鏉戦唶婵犻潧娲╃欢銏$節閻㈤潧孝闁挎洏鍊濋幃褎绻濋崶銊ヤ簵闂佸搫娲ㄩ崰鍡樼濠婂牊鐓欓柡澶婄仢椤f娊鏌熼鍨汗缂佽鲸甯¢幃鈺冪驳绾應鍋撻崸妤佺厸閻忕偛澧介埥澶嬨亜椤愶絿绠炴い銏★耿閹晠宕橀崣澶屽酱闂傚倸鍊峰ù鍥敋閺嶎厼绐楁繛鎴緛缂嶆牕顭跨捄铏圭伇缂佺姵妫冮弻锝夊籍閸屾艾浠橀梺缁樺姇閿曪箓骞夌粙娆惧悑闁搞儮鏅欑粭澶愭⒑閼姐倕鏋涢柛瀣工閵嗘帗绻濆顓犲帾闂佸壊鍋呯换鍌炲汲濞嗗繆鏀介柨娑樺濞呮洜绱掓潏銊ユ诞妞ゃ垺鐟︾缓鐣岀矙閸喖寮峰┑掳鍊楁慨鐑藉磻濞戔懞鍥敍濠靛牅绨烽梻鍌欑閹测剝绗熷Δ鍛獥婵°倐鍋撻柍璇茬Ч婵偓闁靛牆妫岄幏娲煟閻樺厖鑸柛鏂胯嫰閳诲秹骞囬悧鍫㈠幍闂佸憡鍨崐鏍偓姘炬嫹