滤波器设计

Posted mcsfx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滤波器设计相关的知识,希望对你有一定的参考价值。

来源:http://www.360doc.com/content/17/0518/21/1832721_655109467.shtml

滤波器设计概要

 在信号系统领域,基于傅里叶变换的谱分析和滤波器设计是两个最基本的问题。在模拟系统中,常常用电子元件逼近所需的传递函数,而在数字系统中,则是用差分方程法去逼近所需传递函数。在硬件实现上,主要是用FPGA中的若干和积门来完成。

3.FIR滤波器设计

    FIR滤波器很简单,它实际上是一个全零点模型(MA滑动平均模型),滤波器系数只包含滑动平均的B,而自回归的A=1。滤波过程就是XB的卷积,再联系滤波器的原理,容易知道,FIR滤波器的系数B就是滤波器的冲激响应h。

    因此它的设计就简单了,只要设定滤波器的频率响应H,进行ifft后就得到冲激响应h,把h直接作为滤波器系数B对原信号滤波即可。

技术图片 技术图片

    如上图,是设定的一个低通滤波器的频响,注意了,数字系统有周期延拓的特点。把它ifft得到的冲激响应h(t),注意了,t从负到正的,这里把它平移到正位置,这也是造成FIR滤波器零相位响应变为线性相位响应的原因。还有一点,原来h(t)不是因果的,平移之后就变成因果的了,这样理解对吗??

    另外,所得h(t)的长度较长,可截取一段,降低阶数。

技术图片 技术图片

技术图片 技术图片

如上图所示可见,截取的越长,所得的频响越接近设定频响,第二组就是截取61点(fftl=512)的频响,几乎和设定频响一样。第一组是截取的21点的频响,也大差不差,不过滤波器要做21阶,用硬件做还是比较浪费资源的。在看其相频响应,如下图

技术图片

下面来看一个例子,用上面设计的FIR滤波器,得到滤波系数h,直接用matlab函数y=filter(h,1,x)进行滤波,即以h为BA为1进行滤波,得到的谱如图:

技术图片 技术图片

技术图片 技术图片

 

 用FIR设计带通、高通等滤波器也十分简单,和上面方法一样,如下图:

技术图片 技术图片 技术图片

技术图片 技术图片

    综上,FIR滤波器设计及其简单,且具有线性相位,对各个频率分量的时间延时都相同。其缺点是,所需阶数一般较多,实现起来浪费硬件资源。

以上是关于滤波器设计的主要内容,如果未能解决你的问题,请参考以下文章

matlab 低通滤波器设计

基于MATLAB的IIR滤波器的设计及应用(信号去噪)怎么设计啊

滤波器设计模拟到数字

FIR数字滤波器设计(上)

用matlab设计一个滤波器

低通滤波器的设计和计算