fir滤波器matlab实现_关于FIR&IIR系统的算法说明以及结果验证(2)

【IIR系统】一. 基础结构与特性方程:
IIR系统也被称为无限冲激响应系统。那么什么叫无限冲激相应呢?
字面意思,即冲激响应的point数为∞。
假设,我们有一个冲激响应函数h[n],

c3745dbb781bb74ba10c3bb9f495da74.png


采用FIR同样的方法(卷积和)去构建滤波器的话会变为,

7ea906590834de13fe1c38870edd8468.png


即我们将采用无穷多个乘法器,这个在现实中是绝对不可能实现的结构。
那怎么办呢?
z变换可以解决这个问题。
使用z变换,我们可以把无限长冲激响应转换到复频率得到传递函数H(z),

85f23fae91b520d92e7bab2baaada634.png


带入Y(z)=H(z)X(z)中后,通过逆z变换我们就可得到输入与输出之间的关系式:
y[n] = x[n] + a*y[n-1]
这个其实就是一个最简单的IIR系统(无限冲激响应系统)。
若我们将一个更复杂的线性时不变系统的差分方程代入,上式则变为,

c1566523656bf7a65a16bdf7c1e5e913.png


系统结构图如下图所示,我们称这个系统为递归型系统。

ebecfb04abf86d8ef4f4bc5a10b0ff25.png


通过z变换以及DTFT,我们可以得到这个系统的频率特性方程:

f7a10182c8da19c93d4ecfa6c526dc1a.png


b[m]被称作分子系数,a[n]被称作分母系数。
这两个系数就是Matlab中设计一个IIR滤波器时返回的两个值。
以上是我们采用两个不同的例子所计算得到的IIR系统。
实际上,根据采用的差分方程的不同,我们计算所得到的传递函数以及特性方程也会不同。因此就产生了几个经典的IIR滤波器:
如巴特沃斯滤波器,切比雪夫滤波器,椭圆滤波器等。二. 理解分析:**稳定性:**
首先需要注意的是,递归型的IIR系统,在输入信号的最大值为常数时,有时会导致输出信号的最大值不为常数,使系统处于非稳定状态(不符合BIBO稳定性定律)。因此我们需要在计算出系数a,b后对整个数字系统的稳定性进行判断,这时候就要用上极点和零点了。
极点:IIR系统频率特性方程中分子为0时的解
零点:IIR系统频率特性方程中母为0时的解
通过对极点与零点的分析我们可以计算出给定传递函数系数a与b后,数字系统的稳定性。**全通特性:**
IIR系统最大的优点就是具备完美的全通特性(上文写的是全域通过特性,直接翻译的日语,没想起来查国内网站)
当M=N,并且b[n]=a[N-n]时,特性方程即可变为,
频率特性:

d4dde93f67bb4ec5481e039d51fd8f1b.png


幅频特性:

a8799eca129ec006a6a17e4ff9f04245.png


相频特性:

9c547cca331445420b5a9e111069e799.png


不难看出,频率特性为常数1。这就使得我们滤波前后波形的频率成分会完全保留,只有相位会改变。通常会用来处理一些对相位要求不高的音频信号。**与FIR系统的关系:**
返回到上一节我们得到的频率特性方程,

f7a10182c8da19c93d4ecfa6c526dc1a.png


会不会看着有点儿眼熟?
下面这个是FIR系统的频率特性方程,

d7597cbfce35bbc8f5474c1bae3cbcad.png


发现没有,其实FIR系统的频率特性方程,和IIR系统频率特性方程的分子和分母都是一样的。即当IIR系统的分母为1时,就是IIR系统就变成了FIR系统。
通过结构图我们其实也可以看出来。
IIR系统其实就是让输入信号先经过FIR系统进行一次滤波,然后对一次滤波后的结果再进行二次滤波,再反馈回来。扯了那么多乱七八糟的公式,其实结构就这么简单。。。
文字不大懂的话可以看下面这个示意图,可以和上方的结构图结合起来一起研究。

8365f174380dc549c48ce03f1a4679cb.png

**零相位滤波:**
IIR系统的优缺点上一章已经提到了。
IIR系统,可以提供完美的全通特性,但是只能近似的实现线性相位特性,从而导致信号失真。
为了解决信号失真的问题,Matlab里面有一个神奇的函数filtfilt,实现方法其实很简单:

  1. 使用IIR滤波器对原始信号x(n)进行滤波得到y(n)
  2. 把滤波后信号反转求逆得到y'(n)
  3. 使用IIR滤波器对y'(n)进行滤波得到信号y2'(n),这一步就把第一次滤波所产生的相位失真完美补偿了
  4. 把y2'(n)反转求逆得到y2(n),即零相位滤波后信号

非常有意思的方法,下面会有仿真验证。
缺点也很明显就是无法在online系统中应用,不过就研究来说足够了。三. 仿真验证:
主要采用巴特沃斯滤波器,进行数据验证。
与FIR系统相同,我们首先建立一个原始波形。

  1. 采样频率1000Hz10Hz,20
  2. 1-1500 point: 10Hz, 20Hz, 30Hz的混合波(30Hz为噪音)
  3. 1501-2500 point: 10Hz, 20Hz混合波(无噪音)

e3f78e5881760005d0e18194620ce757.png

870691327bf7f985b671e21f3bc6b535.png

** 巴特沃斯滤波器:**
设计1个低通巴特沃斯滤波器,5阶,25Hz低通滤波器
幅频与相频特性如下

d77fb9e6cf1c9b8c099a2b8bad86961b.png


结果:

  1. 产生了群延迟,由于IIR系统的非线性相位特性,因此数值无法计算
  2. 1-1500 point之间的滤波后数据产生了较大的失真,20Hz数据几乎完全失真
  3. 30Hz数据还有所残留,提升滤波器阶数可消除

da1543ebfd1b57cf1cb114badd304494.png

7d9c301d34234ee82fad4bebedadee54.png

** 零相位巴特沃斯滤波器:**
采用上述巴特沃斯滤波器系数,观察零相位器滤波结果

  1. 群延迟被完美的消除了
  2. 20Hz波形还是有些许失真存在

696bd848bbae9c3ccae7cbaab9e85e84.png

f1f09490412ceabf5eefb06e4b239dc1.png

四. 感想
IIR滤波器由于他的低成本低运算量,在数据处理领域也被广泛应用,至于说与FIR滤波器哪个好,就要看各位应用在什么领域了。
比如在生物神经领域,需要较高的零相位特性,因此广泛应用着零相位巴特沃斯滤波器。
但是我们如何设计一个最合适的滤波器呢,随着阶数的增加,信号延迟,以及收敛时间都会增大,那么到底几阶的才好呢?
下一章主要讨论如何设计一个最合适的滤波器,最适化算法。

对我感兴趣,关注我吧,咱们一起讨论研究

ce9e1a1e0ce92d09425b100e16bbd87a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值