加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-06-21 19:09:04)
标签:

信号处理

自适应滤波算法

matlab程序

分类: 信号处理

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方向,并假设两个方向上运动相互独立。分别将运动轨迹离散为一系列点,作为滤波器的输入,分别在两个方向上进行滤波,最终再合成运动轨迹。

程序设计思路:

 

生成期望信号-添加噪声-设置滤波器系数初值-迭代运算-最优滤波输出

滤波结果分析:

http://s8/bmiddle/003qTDx1zy7c39Fh0X5f7&690                                                                     定步长自适应滤波算法

 



http://s16/mw690/003qTDx1zy7c39Fzuhhbf&690

                                                              变步长自适应滤波算法


http://s3/mw690/003qTDx1zy7c39FNXNg82&690

                                                           解相关自适应滤波算法 



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有