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

相关推荐
大江东去浪淘尽千古风流人物1 天前
【HIMO】跨模态图像匹配算法:IMO方向场提取与PolarP描述符源码精讲
matlab·跨模态·遥感·图像匹配·1024程序员节·特征描述符
星夜离尘561 天前
MATLAB 因果采样保持:用历史匹配和数据年龄防止未来信息泄漏
数据结构·算法·matlab
星夜离尘563 天前
MATLAB 工程实验:从相邻块均值手写重叠 Allan 偏差,数清有效项
算法·matlab·均值算法
风巽·剑染春水3 天前
【数据处理】Matlab 环境下安装 SPM 与 CAT 工具并进行脑核磁数据预处理
matlab·spm·cat·脑部核磁·t1w图像
机器学习之心3 天前
把 PINN 塞进群智能反演:一次可审计的结构损伤识别 MATLAB 复现
matlab
机器学习之心3 天前
基于CNN-BiLSTM的轴承剩余寿命预测,MATLAB代码
matlab·cnn·cnn-bilstm·轴承剩余寿命预测
苦瓜汤补钙3 天前
Matlab 2022b(中文)的使用教程——Win11
开发语言·matlab
星夜离尘564 天前
MATLAB 工程实验:滞回加持续时间报警,把 UNKNOWN 留在状态机里
开发语言·matlab
星夜离尘565 天前
MATLAB 只剩批次摘要怎么合并方差:用 n、mean、M2 保留批间差异
开发语言·matlab
爱喝热水的呀哈喽6 天前
HEJIAN RESEARCH
开发语言·matlab