滤波器设计
Posted mcsfx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滤波器设计相关的知识,希望对你有一定的参考价值。
来源:http://www.360doc.com/content/17/0518/21/1832721_655109467.shtml
滤波器设计概要
在信号系统领域,基于傅里叶变换的谱分析和滤波器设计是两个最基本的问题。在模拟系统中,常常用电子元件逼近所需的传递函数,而在数字系统中,则是用差分方程法去逼近所需传递函数。在硬件实现上,主要是用FPGA中的若干和积门来完成。
3.FIR滤波器设计
FIR滤波器很简单,它实际上是一个全零点模型(MA滑动平均模型),滤波器系数只包含滑动平均的B,而自回归的A=1。滤波过程就是X和B的卷积,再联系滤波器的原理,容易知道,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为B,A为1进行滤波,得到的谱如图:
用FIR设计带通、高通等滤波器也十分简单,和上面方法一样,如下图:
综上,FIR滤波器设计及其简单,且具有线性相位,对各个频率分量的时间延时都相同。其缺点是,所需阶数一般较多,实现起来浪费硬件资源。
以上是关于滤波器设计的主要内容,如果未能解决你的问题,请参考以下文章