软件滤波算法有哪些(滤波算法有哪些函数)

欢迎大家关注转发交流,不定时更新!

1、FIR滤波器的原理

FIR滤波器的传递函数为:

软件滤波算法有哪些(滤波算法有哪些函数)

转换到时域为:

软件滤波算法有哪些(滤波算法有哪些函数)

信号通过FIR滤波器不失真的条件就是滤波器在通带内具有恒定的幅频特性和线性相位特性,FIR滤波器和后面要说的IIR滤波器相比,其主要优点就是线性相位。

线性相位的系统需要其单位冲激响应h[n]满足下面的式子,即系统单位冲激响应奇对称或偶对称

软件滤波算法有哪些(滤波算法有哪些函数)

由于N可以取奇数或者偶数,而且又有正负之分,固FIR滤波器的单位冲激响应一共有四种不同的情况,下面具体讨论:

1)、h[n]=h[N-1-n],且N为奇数

软件滤波算法有哪些(滤波算法有哪些函数)

可以看出在该条件下,系统传输函数具有严格的线性相位,并且从上式看得出其幅频特性中包含cos(nw)函数,固幅频函数关于w=0,pi,2*pi三点偶对称,固该类型的FIR滤波器(系统冲激响应h[n]长度为奇数且关于N-1/2偶对称)适合设计高通,低通,带通,带阻等各类滤波器

2)、h[n]=h[N-1-n],且N为偶数

软件滤波算法有哪些(滤波算法有哪些函数)

可以看出在该条件下,系统传输函数具有严格的线性相位,并且从上式看得出其幅频特性中包含cos[(n-1/2)w)]函数,其关于w=pi奇对称,固其在w=pi处肯定等于0,因此该类型FIR滤波器不适合设计高通和带阻型

3)、h[n]=-h[N-1-n],且N为奇数

因为h[n]奇对称,且N为奇数,那么可以得出h[(N-1)/2]=0,根据上面推导可以得到该系统传输函数为:

软件滤波算法有哪些(滤波算法有哪些函数)

由于sin(nw)关于w=0,pi,2pi奇对称,固改系统传输幅频特性在w=0,pi,2pi点必须是0,因此该类型FIR滤波器只适合设计带通滤波器。

4)、h[n]=-h[N-1-n],且N为偶数

软件滤波算法有哪些(滤波算法有哪些函数)

由于sin[(n-1/2)w]关于w=0,2pi奇对称,关于w=pi偶对称,因此该类型FIR滤波器不能设计低通和带阻滤波器。

[左上]可以看出在h[n]满足上述四种情况时,系统的传输函数的相频特性都满足线性相位的要求,但是当h[n]奇对称时,通过该滤波器的所有频率成分上都会额外添加一个90度的相移,这相当于对进入FIR滤波器的信号先进行了移相在滤波。而且不管h[n]是偶对称还是奇对称,信号经过FIR滤波器后会引入一个N-1/2的群延时

2、FIR滤波器的实现方法

2.1、窗函数设计法

根据上面分析,我们看到FIR滤波器的设计主要是确定其冲激响应h[n]的系数,不同的系统对应不同的频率特性。试想对于一个理想低通滤波器,其频域的有限宽度,对应到时域就是无限长,这肯定是物理不可实现的,在现实中,我们为了FIR的可实现性,会选择加窗的方法去对理想型滤波器进行逼近。

窗函数设计法,其实就是一种无限长度的截断,这会造成一个问题,那就是频谱的泄露 ,试想理想滤波器的冲激响应是无限长,如果截取其中一段进行近似表示,那么截取后的信号频谱其频域将会无限长,那么通过加窗就造成原有的有限频带分散到无限的频带上,这就是所谓的频谱泄露。频谱泄露不可避免,但是要尽量减小。

在实际的设计过程中窗函数的类型有很多,不同窗函数对设计的滤波器性能有不同的影响,实际应用中要根据不同的需求选择不同的窗函数。具体可以看下图所示,可以看到不同的窗函数都具有明显的主瓣和旁瓣,其中主瓣宽度和旁瓣的衰减特性是不同窗函数明显的不同也是我们选取窗函数的依据,矩形窗具有最窄的主瓣宽度,但也有最大的旁瓣幅度(第一旁瓣较主瓣大概只衰减13dB);blackman窗具有最大的旁瓣衰减,同时也有最大的主瓣宽度,通常hanning窗和hamming窗具有较小的旁瓣幅度和较快的衰减(分别关系到设计FIR滤波器的旁瓣电平和过渡带宽度),是常用的窗函数。

软件滤波算法有哪些(滤波算法有哪些函数)

下表给出了不同窗函数的主瓣宽度和第一旁瓣衰减,后面会讲到窗函数设计FIR滤波器过程中会应用到这些参数。

窗函数类型

主瓣宽度

第一旁瓣衰减(dB)

矩形窗

4pi/N

-13

汉宁窗

8pi/N

-31

哈明窗

8pi/N

-41

bartlett窗

8pi/N

-25

blackman窗

12pi/N

-57

三角窗

8pi/N

-25

Kaiser窗

可调

可调

chebyshew窗

可调

可调

利用窗函数设计滤波器十分简单,其步骤为:

1)、对理想滤波器的频域响应进行Fourier逆变换得到理想滤波器的单位冲激响应h[n];

2)、根据设计FIR滤波器的性能指标选择响应的窗函数对上面的理想滤波器的单位冲激响应进行加窗截取即可。

一般情况下,利用窗函数进行FIR滤波器设计过程中,窗的长度选择的越长,那么得到的滤波器其幅频特性越好,但是对应的数据处理量就会越大,例如当我们给定了需要设计FIR滤波器的过渡带宽度就能够根据上面表格的主瓣宽度得到窗口长度N。还有一个需要明确的就是通过上面各类窗函数的图形我们知道利用窗函数得到的FIR滤波器的单位冲激响应h[n]肯定是偶对称的,那么当N为偶数时不支持设计高通和带阻滤波器,如果要设计就必须满足N是奇数才行。

?[左上]举例说明:假设我们需要设计一个FIR低通滤波器,该滤波器性能指标如下:通带归一化频带wp=0.3(0.3*5000=1500Hz),阻带归一化频点wp=0.5(0.5*5000=2500Hz),阻带衰减不小于30dB,通带纹波不高于3dB,并利用设计的低通滤波器对输入的信号sin(2*pi*f1*t)+sin(2*pi*f2*t),其中f1=1KHz,f2=3.3KHz,采样频率fs=10KHz的信号进行滤波.

设计分析:根据要求,该FIR滤波器的阻带衰减要大于30dB,那么根据上面表格,我们就不能选择像矩形窗这样的窗函数,这里我们可以选择哈明窗,因为其第一旁瓣衰减有41dB满足要求;由于过渡带宽度为:0.5pi-0.3pi=0.2pi,那么由此可以得到哈明窗的窗函数长度N=40。

软件滤波算法有哪些(滤波算法有哪些函数)

观察通过hamming窗后得到的滤波器频响曲线符合设计要求,当我们利用加窗后的滤波器对我们的输入进行滤波,得到的滤波结果如下图所示:

软件滤波算法有哪些(滤波算法有哪些函数)

可以看到滤波后,3.3KHz由于在滤波器通带以外,固会被滤除,而1KHz由于位于通带内部则保留了下来,同时可以看到选择合适的窗函数类型,能够取得更好的滤波器效果(例如上图汉明窗和矩形窗的比较)。同时从上图的滤波器时域输出可以看到信号经过FIR滤波器后有一段固有的延迟,这个延迟长度就是我们之前说的群延迟为:N-1/2

MATLAB中集成了fir1函数,其就是采用经典的窗函数的方法去进行FIR滤波器的设计,其调用格式为:

b=fir1(n,wn[,'ftype',window]

其中,n为要实现的FIR滤波器的阶数,wn为相应FIR滤波器的截止频率,范围是0-1,'ftype'为滤波器类型,比如'high'代表高通,window为窗函数类型,其长度为n+1,默认采用哈明窗。

2.2、频率采样法设计FIR滤波器

上面讲的窗函数设计法是从时域的角度出发,那么我们能否从频域角度出发去设计我们需要的FIR滤波器呢?答案是肯定的。

频率采样法的目的也是希望构造出一个与理想滤波器频率响应尽量逼近的物理可实现滤波器。

假设,理想滤波器的传输函数为:

软件滤波算法有哪些(滤波算法有哪些函数)

如果对上面的连续频谱进行采样,由于离散信号的频谱是周期的,固在0-2pi连续采样N个点,那么得到采样后的离散频谱为:

软件滤波算法有哪些(滤波算法有哪些函数)

为了对理想频谱采样后,其时域响应h[n]满足线性相位的要求,即:

软件滤波算法有哪些(滤波算法有哪些函数)

根据第一节分析,当h[n]=h[N-1-n],且N为奇数时,相应FIR滤波器的幅频特性A(w)关于w=0,pi,2pi三点偶对称;同理相应FIR滤波器的相位特性满足下式:

软件滤波算法有哪些(滤波算法有哪些函数)

利用频率采样法设计滤波器也十分简单,其步骤为:

1)、根据设计FIR滤波器的设计指标,得到采样后的FIR滤波器的频域表示;

2)、根据反变换得到相应FIR滤波器的时域表示即可;

举例说明:当我们利用频率采样法,对理想低通滤波器进行采样,设计一个截止频率为pi/5的低通滤波器,并比较不同的频域采样点数对结果的影响?

软件滤波算法有哪些(滤波算法有哪些函数)

除了上面的设计方法外,还有其他很多最优的FIR滤波器设计办法,在实际使用中,我们可以利用MATLAB提供的filterdesign进行FIR滤波器设计,具体设置界面如下图所示,输入自己的设计需求,工具就能自动生成你需要的FIR系数。

软件滤波算法有哪些(滤波算法有哪些函数)

3、FIR滤波器的硬件实现方法

3.1、并行结构FIR滤波器结构

根据上面两节原理介绍,我们知道一个FIR滤波器,其硬件实现上就是一系列的乘法及加法器结构,具体如下图所示,可以看到最直观的硬件实现对于N位的FIR滤波器,我们需要N个乘法器和N-1个加法器也即所谓的并行结构。

在实际硬件实现过程中可以根据实际需求对下面框图进行变形,以设计出满足硬件实现要求的FIR滤波器。

软件滤波算法有哪些(滤波算法有哪些函数)

3.2、串型结构FIR滤波器结构

所谓的串型结构,就是对于上图的结构我们硬件实现上只有一个乘法器和一个加法器,输入数据x[n]以fclk输入到N bits移位寄存器组,而下面虚线框图的乘法器和累加器工作在N*fclk时钟下,即能够保证在下一个x[n]输入前,Nbit移位寄存器里面的数据都进行了上图所示的乘累加计算。这里需要注意的是滤波器的输出y[n]是以fclk输出。这样的结构的好处就是我们能够以较少的硬件代价实现上图所示的FIR滤波器。

软件滤波算法有哪些(滤波算法有哪些函数)

3.3、转置型FIR滤波器结构

根据3.1节的FIR滤波器结构,我们可以稍微变形,就会获得转置型FIR滤波器的实现,具体如下图所示,与3.1节的直接型FIR相比,转置型FIR没有增加或者降低实际的硬件开销(实际上转置型FIR硬件开销要大,因为其打拍的是乘法器输出的结果,这点要注意),但是由于转置型FIR滤波器减少了关键路径延迟,固实际实现电路较直接型能够收敛到更高的工作频率上。

软件滤波算法有哪些(滤波算法有哪些函数)

在实际硬件实现过程中,除了上面的方法还有很多其他方法,比如由于FIR滤波器的系数是对称的,固我们是不是可以将相同的系数进行合并,那么肯定能节省一定数量的硬件资源,还有譬如分布式(DA)算法等这里不再赘述。

解决企业获客难题,添加 微信:hvq698  备注:获客

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 792114587@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.yunxkee.com/13966.html