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

相关推荐
沅_Yuan2 小时前
基于LSSVM-ABKDE的多输入单输出回归预测模型【MATLAB】
人工智能·神经网络·机器学习·matlab·回归预测·lssvm·kde
简简单单做算法4 小时前
基于Qlearning强化学习的RoboCup足球场景下Agent智能进球决策matlab模拟与仿真
matlab·agent·强化学习·qlearning·robocup·智能进球决策
学习永无止境@4 小时前
MATLAB中矩阵转置
算法·matlab·fpga开发·矩阵
yong99906 小时前
Matlab AHP层次分析法(Analytic Hierarchy Process)实现指南
c语言·matlab
机器学习之心6 小时前
基于CNN卷积神经网络的轴承剩余寿命预测MATLAB实现
人工智能·matlab·cnn·轴承剩余寿命预测
沅_Yuan6 小时前
基于RIME-CNN-SVM的多输入单输出回归预测模型【MATLAB】
神经网络·支持向量机·matlab·回归·cnn·svm·rime
我爱C编程7 小时前
【3.2】FFT/IFFT变换的数学原理概述与MATLAB仿真
算法·matlab·fpga·fft·ifft
chao1898447 小时前
基于改进二进制粒子群算法的含需求响应机组组合问题MATLAB实现
开发语言·算法·matlab
551只玄猫9 小时前
【数学建模 matlab 实验报告12】聚类分析和判别分析
开发语言·数学建模·matlab·课程设计·聚类·实验报告
iCxhust15 小时前
反Park+反Clarke变换
matlab