FIR数字滤波器设计的两种实现

前言

介绍了MATLAB脚本程序法、FDATool设计法2种FIR数字滤波器的设计方法,并附带一定的窗函数理论知识及具体设计步骤,而且这2种方法都能够根据要求实现设计目标。通过对比3种设计实现方法,广大设计人员可以根据自己的实际情况快速准确的实现FIR数字滤波器的设计,不仅加深了FIR滤波器的理论知识,而且也提高了学习研究效率。

在MATLAB环境下FIR滤波器设计

FIR滤波器的设计方法有很多,本文分别使用MATLAB脚本程序设计法、FDATool设计法和Simulink设计法等三种方法,来进行滤波器的设计及方法研究。

在一般情况下,理想数字滤波器的单位采样序列hd(n)是无限长的,是非因果序列,在物理上是很难实现或者是不可能实现的。为使物理可实现,需要对hd(n)截取一段h(n)来近似表示hd(n),这会改变原来滤波器的性能指标,出现"吉布斯效应",造成很大的误差。为了改善这种情况,要求窗函数主瓣宽度尽可能窄,以获得最小的过渡带;旁瓣相对值尽可能小,以使得通带波纹小,且阻带衰减增大。

使用窗函数设计FIR滤波器时,要根据给定滤波器指标选择合适的窗函数和窗宽度N。在设计FIR滤波器的过程中,一个重要的计算就是怎么加窗。采用矩形窗是最直接简单的方法,但采用矩形窗会产生很大的"Gibbis效应",且矩形窗的第一旁瓣仅比主瓣衰减13 dB。故在实际应用设计中,一般采用其他窗函数,得到实际设计的FIR数字滤波器的单脉冲响应序列口。目前几种主要的窗函数分别为:矩形窗、三角形窗、汉宁窗、哈明窗、布莱克曼窗和凯泽窗等。表中的数据给出了它们的性能比较.

MATLAB脚本程序设计法

MATLAB软件提供了丰富的工程应用实践,同时,MATLAB信号处理工具箱也提供了各种窗函数滤波器设计函数和滤波器实现函数。本文的滤波器设计程序语言如图所示,执行该程序所得的滤波器幅频一相频特性如图所示:

Fs = 10000;

N =127;

Fc =1000;

flag ='noscale'

Beta =0.5

window = kaiser(N+1,Beta);

b =fir1(N,Fc/(Fs/2),'low',window,flag);

freqz(b,1,512);

FDAtool设计法

FDATool是MATLAB信号处理工具箱里专用的滤波器设计分析工具。FDAToo'l可以设计几乎所有基本的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活口"。下面以采用海明窗函数设计一个95阶的带通滤波器为例,来讲解FDATool的使用方法,该滤波

器的性能要求有Fs=1 000 Hz,Fc1=70 Hz,Fc2=84 Hz。

结语

MATLAB脚本程序法设计直观,公式和原理一目了然,但对于应用人员有较高的理论知识要求;而FDATool设计法采用良好的GUI界面,用户可以根据具体的要求自己实现设计任务,并且可以随时观察波形信息以及各种参数等等,是初学者理想的选择方法

相关推荐
2zcode12 小时前
基于MATLAB改进最大熵法的大规模新能源并网概率潮流计算
开发语言·matlab
南宫萧幕13 小时前
MATLAB/Simulink 从零打通:HEV 能量管理 GA 联合仿真保姆级建模指南
开发语言·算法·matlab·汽车·控制·pid
南宫萧幕14 小时前
基于 PSO 的 HEV 能量管理策略:从联合仿真建模到排错实战
开发语言·python·算法·matlab·控制
INosdfgs14 小时前
Matlab GUI界面设计:从入门到实战
开发语言·其他·microsoft·matlab
jllllyuz14 小时前
相关干涉仪测向方法的MATLAB仿真
开发语言·matlab
Evand J15 小时前
【MATLAB代码介绍】基于RSSI的蓝牙定位程序,N个锚点、二维平面
开发语言·matlab·蓝牙·定位·rssi
jiushiapwojdap16 小时前
Matlab GUI 界面设计:从入门到实战
开发语言·其他·matlab
rit843249917 小时前
电容层析成像(ECT)的ART算法MATLAB演示实例
开发语言·算法·matlab
ytttr8731 天前
MATLAB SIFT图像配准实现
算法·机器学习·matlab
南宫萧幕1 天前
HEV能量管理控制算法实战:从MPC/RL理论基础到Simulink闭环建模
算法·matlab·汽车·控制·pid