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界面,用户可以根据具体的要求自己实现设计任务,并且可以随时观察波形信息以及各种参数等等,是初学者理想的选择方法

相关推荐
CAE32031 分钟前
BPM-Matlab光束传播法光学仿真
matlab·bpm·光束传播法
Evand J17 小时前
【MATLAB例程,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。附MATLAB完整代码的下载链接
开发语言·matlab·车联网·调度·mpc·节能·车辆控制
阿 才21 小时前
Matlab(Simulink)使用详解
运维·网络·matlab
Evand J1 天前
【MATLAB例程,车联网12】基于模型预测控制(MPC)的网联车辆交叉口生态驾驶动态优化仿真分析。附完整代码的下载链接
物联网·matlab·车联网·mpc·模型预测控制·车辆·网联车辆
民乐团扒谱机1 天前
【微实验】线性代数之——奇异值分解 SVD:穿透数据迷雾的“X光机”,附 MATLAB 全流程仿真
线性代数·算法·matlab
majorArcs2 天前
MATLAB 绘制论文级双重饼图:2024 高教社杯 C 题实战
matlab
Evand J4 天前
【MATLAB例程,车联网7】CACC网联车辆协同控制:ACC对比、V2X时延丢包与队列稳定性,附例程下载链接
开发语言·matlab·车联网
kaixin_啊啊4 天前
香精近红外总体步骤概览
人工智能·matlab·近红外
Evand J4 天前
【MATLAB例程,PDR11】二维平面下的PDR(行人航位推算)步态检测与EKF融合定位,附代码的下载链接
开发语言·matlab·平面·pdr·行人导航·步态检测
matlab代码4 天前
基于matlab肤色人脸标记检测系统 GUI界面【源码53期】
开发语言·matlab·人脸标记