欢迎大家到我的个人博客玩耍!

1.前言

在信号处理领域,一个信号当前时刻的值常常与其过去时刻的值以及输入信号有关,很多人会用迭代算法去求,这是一种很直观的解决办法,但迭代算法实在是太慢了,尤其是数据量很大时,对实时信号处理简直是灾难!

有什么办法可以加快处理速度吗?答案是“滤波器”!

用信号与系统的角度去观察世界,所有的处理过程都可以看作一个滤波器。

下面以AR(2)模型为例,比较迭代算法和使用滤波器处理的结果!

2.算例

AR(2)AR \left( 2 \right)过程unu_{n}的差分方程为un=a1u(n1)a2u(n2)+v(n)u_{n} = -a_{1}u\left( n-1 \right) - a_{2}u\left( n-2 \right) + v\left( n \right),其中vnv_{n}是零均值,方差为σv2=0.0731\sigma_{v}^{2}=0.0731的加性白噪声。ARAR参数a1=0.975,a2=0.95a_{1} = -0.975,a_{2} = 0.95。需要产生N=512N=512点的un(n=1,2,,N)u_{n}\left( n= 1,2,\cdots,N \right)

3.结果比较

可以看到,滤波器实现和迭代实现结果是一样的。
迭代算法太慢?试试滤波器吧!

利用MatlabMatlabtic,toctic,toc函数,得到两种方法的运行时间,可以看到基于滤波器实现的时间要比迭代算法实现快一个数量级左右,是这一个很大的提升,特别是样本点数很大时!
迭代算法太慢?试试滤波器吧!

4.MatlabMatlab代码下载

下载代码请移步迭代算法的滤波器实现!

相关文章: