FIR数字信号滤波器

数字滤波器
在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高。而在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器。
其中数字滤波器具有稳定性高、精度高、设计灵活、实现方便等许多突出的优点,避免了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题,因而随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。其中有限冲激响应(FIR)滤波器能在设计任意幅频特性的同时保证严格的线性相位特性,在语音、数据传输中应用非常广泛。

在信号处理中,滤波器的设计是非常重要的一个环节。滤波器的作用是什么?滤波器的作用就是把噪音去掉,把感兴趣的信号从大量信号中提取出来。
滤波器分两大类,一种是模拟(ANALOG)滤波器,另外一种是数字(DIGITAL)滤波器。模拟(ANALOG)滤波器是由模拟电路构成,而数字(DIGITAL)滤波器是由数字处理集成电路模块(DSP)和相应的软件构成。
数字(DIGITAL)滤波器是可编程的,所以相对于模拟(ANALOG)滤波器有很多优点。其中最大的优点是通过改变程序或改变程序变量就可设计出不同特点的滤波器,而且数字滤波器可以精确的处理低频率信号。
前面我们提到,什么是滤波器?滤波器就是把噪音去掉,把感兴趣的信号,或者说我们感兴趣的频率信号,从大量信号中提取出来。这如果要用数学语言来表达,那么就是用一个期望的频率特征函数H(f)去乘以输入信号频率X(f)。我们知道,输入信号是有时间性的,它是随着时间的改变而改变。就是说信号是发生在时间空间(时空,TIME DOMAIN)里的,那么,“期望的频率特征函数H(f)去乘以输入信号频率X(f)”这个数学表达在时间空间里是怎样的一个表达式呢?根据傅立叶变换定律,“期望的频率特征函数H(f)去乘以输入信号频率X(f)”在时间空间里就是“这个期望的频率特征函数H(f)在时间空间里的表达式h(t)去和输入信号x(t)做一个卷积”。

具体什么是卷积?用一句经典的话概括:卷积就是各个时刻的输入信号各自乘以相对应的衰减或增幅,然后叠加在一起作为输出信号输出,这里的衰减或增幅就对应与系统的单位冲激响应。——加权叠加。
物理意义:
卷积的重要的物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。
详细的卷积原理可参考知乎网上的介绍,里面举了非常详细的例子介绍。
卷积讲解可参考:http://blog.csdn.net/bitcarmanlee/article/details/54729807
卷积的应用
用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。
FIR滤波器是非递归型滤波器的简称,又叫有限长单位冲激响应滤波器。带有常系数的FIR滤波器是一种LTI(线性时不变)数字滤波器。冲激响应是有限的意味着在滤波器中没有发反馈。长度为N的FIR输出对应于输入时间序列x(n)饿关系由一种有限卷积和的形式给出,具体形式如下:

直接形式FIR滤波器图解:

输入信号是有时间性的,随着时间的改变而改变,FIR滤波器最终的输出是各个时刻的输入乘以相应的权重(系数),然后进行叠加,输出。

FIR原理
FIR数字滤波器“移动平均数”为例子:
“移动平均数”就是按我们事先设定的信号个数将输入信号加以平均。譬如,如果我们按每4个信号就做一次平均,那么这个4点的“移动平均数”滤波器就如下图所示:

下图是经过11点和51点“移动平均数”滤波器过滤的信号图:

“移动平均数”滤波器的频率响应如下图所示:

如上图所示,随着点数的增加,滚降(ROLLOFF)变陡了,但对旁瓣(sidelobe,衰减部分)的高低影响不大。但是如果我们考虑对滤波器的每个系数采用不同的权重(加权),而不是像“移动平均数”滤波器那样,用相同的权重(1/4,对4点“移动平均数”滤波器来说),那么可以期待旁瓣的大小会大大的降低。
对系数采用不同权重的滤波器,我们可以用下面的数学公式来表达:

这就是FIR数字滤波器的一般表达式。
下面我们以设计一个低通滤波器(LPF)为例,来说明FIR数字滤波器窗函数法的设计要点。
假设采样频率为Fs,滤波器的截止(CUT-OFF)频率为Fco,滤波器的长度为Nfir,那么用图形表示出来就如下图所示:

假设Nfir=128,Nco=13 注:Fco=Fs*(Nco/Nfir),h(t)的计算为:

那么这个低通滤波器的有限冲激响应就如下图所示:

这样我们就设计出了一个FIR低通滤波器。为了检测这个滤波器的性能,我们用信号发生器产生包含从直流到频率为采样频率的一组信号,如下图所示:

我们把这组信号与前面设计的FIR低通滤波器做卷积运算,并将结果(输出)进行快速傅立叶变换(FFT),得到的频率响应如下图所示:

除了以上方法获得加权系数(抽头系数)外,还可以通过MATLAB获取。
总之,FIR滤波器的目的是滤除不需要的成分,留下需要的成分,如何留下就是通过加权叠加的方式实现。
滤波器除了低通外,还有高通,带通及带阻。
参考文献:http://blog.sina.com.cn/s/blog_74504f8f0100p5ub.html
FIR滤波器设计方法:
直接窗函数设计方法
等波纹设计方法
版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处
FIR数字信号滤波器的更多相关文章
- 转载论文关于fir滤波器的fpga实现
摘 要 本文讨论的FIR滤波器因其具有严格的线性相位特性而得到广泛的应用.在工程实践中,往往要求信号处理具有实时性和灵活性,本论文研究FIR的FPGA解决方案正体现了电子系统的微型化和单片化. 本论文 ...
- IIR滤波器和FIR滤波器的区别与联系zz
-------------------------------------------------------------------------------------------------- ...
- CIC and Fir 滤波器的级联
在FDATool中 CIC 和 Fir 级联滤波器的设计 1 设计CIC滤波器的幅频特性曲线如下 2.设计FIR 滤波器的幅频特性曲线如下 3.总的特性曲线如下 4.把通带部分放大后的图,比较平坦
- 基于Verilog语言的FIR滤波【程序和理解】
一直想找一个简单.清晰.明了的fir滤波器的设计,终于找到了一个可以应用的,和大家分享一下,有助于FPGA新手入门. 1.说道fir滤波器,滤波系数肯定是最重要的,因为后面程序中涉及到滤波系数问题,所 ...
- 基于FPGA的16阶级联型iir带通滤波器实现
警告 此文章将耗费你成吨的流量,请wifi下阅读,造成的流量浪费本人不承担任何责任.初版源代码获取(请勿用作他用,仅供学习):https://gitee.com/kingstacker/iir.git ...
- Matlab信号处理工具箱函数
波形产生和绘图chirp 产生扫描频率余弦diric 产生Dirichlet函数或周期Sinc函数gauspuls 产生高斯调制正弦脉冲pulstran 产生脉冲串rectpuls 产生非周期矩形信号 ...
- 论文翻译:2018_Deep Learning for Acoustic Echo Cancellation in Noisy and Double-Talk Scenarios
论文地址:深度学习用于噪音和双语场景下的回声消除 博客地址:https://www.cnblogs.com/LXP-Never/p/14210359.html 摘要 传统的声学回声消除(AEC)通过使 ...
- FIR滤波器(1)- 基础知识
FIR滤波器广泛应用于数字信号处理中,主要功能就是将不感兴趣的信号滤除,留下有用信号.FIR滤波器是全零点结构,系统永远稳定:并且具有线性相位的特征,在有效频率范围内所有信号相位上不失真.在无线通信收 ...
- FIR滤波器工作原理(算法)以及verilog算法实现(包含与IIR的一些对比)
滤波器在2017年IC前端的笔试中,出现频率十分的高.不论今后是否会涉及,还是要记住一些会比较好.接下来就将从这四个方面来讲解,FIR数字滤波器的工作原理(算法)与verilog实现. ·什么是FIR ...
随机推荐
- Hibernate -- 一对一映射
一对一关联指两个表之间的记录是一一对应的关系.分为两种:外键关联和主键关联. (1)外键关联 比如一家公司(Company)和它所在的地址(Address).在业务逻辑中要求一家公司只有唯一的地址,一 ...
- U盘安装OS
1. 老毛桃 2. 大白菜 3.
- TiDB 在摩拜单车的深度实践及应用
一.业务场景 摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务的不断发展,TiDB 版本快速迭代,我们将 TiDB 在摩拜单车的使用场景逐渐分为了三个等级: P0 级核心业务: ...
- java 在Excel中插入图片 POI实现
一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...
- 查询相应的key
一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key:返回key存储的类型 ...
- pycharm(v 2018.1)新建工程没有导入本地包
新版的pycharm默认新建的工程Virtualenv(虚拟的环境),在创建环境时一定要注意勾选 Inherit global site-packages: 导入本地包 Make available ...
- MVC 框架中的缓存
在程序中加入缓存的目的很多是为了提高程序的性能,提高数据的查找效率,在MVC框架中也引入了非常多的缓存,比如Controller的匹配查找,Controller,ControllerDescripto ...
- react 项目及视频
项目 视频
- PostgreSQL内存配置记录
PostgreSQL内存配置,参考了其他人的总结,再加上自己的一些体会,做个记录. postgresql的内存分配主要由shared_buffers.temp_buffers.work_mem.mai ...
- File I/O的总结
1读写字符文件 BufferedReader br=new BufferedReader(new FileReader("文件路径")); BufferedWriter bw=ne ...
