新浪博客

自适应滤波算法原理及其应用

2017-06-21 19:09阅读:
To learn, to share, to debate, then comes progress.

该博文整理自课程研究报告,详细内容可参见:
https://wenku.baidu.com/view/9c293150c950ad02de80d4d8d15abe2348 2f03f3
1.算法背景
经典的滤波算法包括维纳滤波,卡尔曼滤波,这些滤波算法都需要对输入信号的相关系数,噪声功率等参数进行估计,而实际中很难实现这些参数的准确估计,而这些参数的准确估计直接影响到滤波器的滤波效果。另一方面,这两类滤波器一般设计完成,参数便不可改变,实际应用中,希望滤波器的参数能够随着输入信号的变化而改变,以取得较好的实时性处理效果。为了弥补传统滤波算法的不足,满足信号处理的要求,又发展了自适应滤波。
2.算法基本原理
自适应滤波与维纳滤波,卡尔曼滤波最大的区别在于,自适应滤波在输出与滤波系统之间存在有反馈通道,根据某一时刻滤波器的输出与期望信号的误差调整滤波器的系数,从而实现滤波器系数的动态调整,实现最优滤波。
(1)信号模型
自适应滤波的目的仍然是从观测信号中提取真实准确的期望信号,因此涉及到的信号有:
期望信号 d(n)

输入信号 x(n)=d(n)+v(n)
输出信号 y(n)
(2)算法原理
一个M阶滤波器,系数为w(m),则输出为:
y(n)=Σw(m)x(n-m) m=0…M
写成矩阵形式: y(j)=WT(j)*X(j)
n时刻的输出误差为: e(j)=d(j)-y(j)= d(j)- WT(j)*X(j)
定义目标函数为 E[e(j)^2],则有:
J(j)=E[e(j)^2]= E[(d(j)- WT(j)*X(j))^2]
当上述误差达到最小时,即实现最优滤波,这种目标函数确定的为最小方差自适应滤波。
对于目标函数J(j),需要求得使其取到最小值对应的W,这里使用梯度下降法进行最优化:
W(j+1)=W(j)+1/2*μ(-J(j))
J(j)=-2E[X(j)*( d(j)- WT(j)*X(j))]= -2E[X(j)e(j)]
W(j+1)=W(j)+μE[X(j)e(j)]
其中-2X(j)e(j)称为瞬时梯度,因为瞬时梯度是真实梯度的无偏估计,这里可以使用瞬时梯度代替真实梯度。
W(j+1)=W(j)+μX(j)e(j)
由此,可以得到自适应滤波最佳系数的迭代公式。


3.算法的收敛性
在最小均方误差自适应滤波算法中,最佳滤波器系数应该满足:
J(j)=0
-2E[X(j)*( d(j)- WT(j)*X(j))]=0
经整理后,可以得到:
WoptT =Rxx-1*Rxd
上式说明,自适应滤波的最佳滤波器系数同维纳滤波相同,与输入信号以及期望信号的相关矩阵有关。
W(j+1)=W(j)+μX(j)e(j)等号两边求期望,并通过一系列推导,可得:
E[W(j+1)]=Wopt+Q(I-μΛ)jQH(W0-Wopt)
式中Rxx=QHΛQ W0为自适应滤波系数的初值。
j取到无穷大时,滤波器应达到最优状态,因此:
(I-μΛ)j=0,则有:|I-μΛ|<=1
上式即为最小均方自适应滤波的收敛条件。
Λ为输入信号的自相关矩阵Rxx的特征值构成的对角阵。


4.变步长自适应滤波算法
在整个迭代过程中,步长不变的情况称为定步长算法。为了保证算法的收敛性,一般要取一个比较小的步长值,但步长过小又容易导致算法收敛过慢。比较理想的情况是,在迭代的初始阶段,误差值较大时,取一个较大的迭代步长,以实现较快的收敛速度;随着迭代次数增加,误差逐渐减小,步长也应相应减小,达到较高的收敛精度。这种思想便称为变步长自适应滤波算法。
常用的变步长自适应滤波算法根据输入信号的或者误差值确定步长。
这里介绍两种具体的变步长算法:
1)归一化变步长自适应滤波算法
μj =α/(β+XjTXj)
αβ均为常数,且满足0<α<2β>=0
该算法使用输入信号的能量对步长因子进行归一化,确保其取到合适的值。
2Sigmod函数变步长自适应滤波算法
μj=β(1-exp(-αej^2))
αβ均为常数,且满足0<α0=<β<μmax
从上述表达式中可以明显看出,随着误差增大,步长值也增大。


5.解相关自适应滤波算法
实验发现,当输入信号之间的相关性比较强时,自适应滤波的效果比较差。因此需要去除相邻两次输入信号序列的相关性,以得到较好的滤波效果。
解相关自适应滤波算法的实现过程为:
r= XjTXj-1/ Xj-1TXj-1
Zj=Xj-rXj-1
μj=βej/ ZjTXj
Wj+1=Wj+μjZj


6.变换域自适应滤波算法
根据解相关自适应滤波算法的思想,使用一组正交基对输入信号进行变换,在变换域上进行自适应滤波,最后再将滤波结果逆变换至时间域。常见的变换有傅里叶变换,分数阶傅里叶变换,小波变换,余弦变换。


7.算法应用与实现
下面讲述如何在实际问题中应用自适应滤波算法:
问题背景:一个点目标在xy平面上绕单位圆做圆周运动,由于外界干扰,其运动轨迹发生了偏移。其中,x方向的干扰为均值为0,方差为0.05的高斯噪声;y方向干扰为均值为0,方差为0.06的高斯噪声。
问题分析与思路:
将物体的运动轨迹分解为X方向和Y方向,并假设两个方向上运动相互独立。分别将运动轨迹离散为一系列点,作为滤波器的输入,分别在两个方向上进行滤波,最终再合成运动轨迹。
程序设计思路:

生成期望信号-添加噪声-设置滤波器系数初值-迭代运算-最优滤波输出
滤波结果分析:
自适应滤波算法原理及其应用 定步长自适应滤波算法

自适应滤波算法原理及其应用 变步长自适应滤波算法

自适应滤波算法原理及其应用
解相关自适应滤波算法

我的更多文章

下载客户端阅读体验更佳

APP专享