LMS与RLS算法学习笔记
实现代码点击 这里下载
一、 研究目的
1.1最陡下降法理论
LMS算法总是与最陡下降法
联合使用,顾名思义,最陡下降法
就是沿着性能曲面最陡放方向向下(曲面负梯度方向)
搜索曲面的最低点。迭代过程首先从曲面上某个初始点(对应与初始权矢量w(0) )
出发,沿着该点负梯度方向搜索至第一点(对应与初始权矢量w(1) ,且w(1)等于初始值w(0)加上一个正比于负梯度的增量 )
。以此类推,直到搜索到最低点 w* 。所以最陡下降法迭代计算权矢量的公式为:
式中,
是控制搜索步长的参数称为自适应增益常数。那么如何选取合适的
值?
由于推到十分复杂,这里简单给出结论:
式中,
为
的最大特征值。当然有时为了免去计算
的特征值的麻烦,因为
是正定的,所以有:
这里,
是
的迹,它可以用输入信号的取样值进行估计,即:
所以进一步有:
1.2 算法
由于最陡下降法每次迭代都需要知道性能曲面上某点的梯度值,而实际上梯度值只能根据观察数据进行估计。而
实质上是用平方误差代替均方误差,即:
可以得到:
得到
算法的基本关系式:
我们可以证明
是
的无偏估计,换句话说,如果在每次迭代调整权矢量前能够进行多次观测,获得多个
,然后一句梯度的统计平均值
来调整权矢量,则迭代结果必定能得到理想的最佳权矢量。
1.3 算法
算法的关键是用二乘方的时间平均准则取代最小均方准则,并按照时间进行迭代计算,换句话说,对从起始时刻到当前时刻所有误差的平方进行平均并使之最小化,即:
其中:
对于,非平稳随机信号,为了更好的跟踪,引入一个指数加权因子对上式进行修正:
式中,
称之为遗忘因子,它是小于1的正数,展开上式可以知道,新到的数据比就到的数据更重要。
这里定义两个新的矩阵(被加权后的自相关和互相关)
,即:
可以推出
算法基本关系:
式中,
1.4研究目标
用 算法和 算法分别设计一个二阶的自适应一步预测横向滤波器,滤波器的输入为二阶AR过程: ,其中 为零均值、单位方差的高斯白噪声,AR模型参数如下:
-1.6 | 0.8 |
分别在步长 和遗忘因子 的情况下,分析设计这个二阶的自适应一步预测横向滤波器的LMS 算法,画出自适应FIR滤波器系数 的迭代曲线。
二、代码解析
1、初始化参数
repeat_times=50; %重复次数,平滑误差
iters=600; %迭代次数
p=2; %滤波器抽头数
u=0.002; %LMS自适应步长
forget_factor=0.98; %遗忘因子lamda
2、LSM开始计算迭代权矢量
%% LMS算法迭代
for i=1:iters %LMS迭代
dn=x(i+p); %设置LMS期望值
un=x(i+p-1:-1:i); %LMS自适应滤波器每次接收值
LMS_e(i)=dn-w_e(:,i)'*un; %LMS误差信号
w_e(:,i+1)=w_e(:,i)+2*u*un*LMS_e(i); %每次迭代权矢量
end
LMS_w1(k,:)=w_e(1,2:end);
3、RLS开始计算迭代权矢量
%% RLS算法迭代
for j=1:iters
d=x(j+p); %设置RLS期望值
U=x(j+p-1:-1:j); %RLS自适应滤波器每次接收值
Pi=T*U; %Pi(n)=T(n-1)*x(n)
K=Pi/(forget_factor+U'*Pi); %K=T(n-1)*x(n)/forget_factor+x(n)'*T(n-1)*x(n)
RLS_e(j)=d-W_e(:,j)'*U; %RLS误差信号
W_e(:,j+1)=W_e(:,j)+K*RLS_e(j); %每次迭代权矢量
T=(T-T*U*U'*T/(forget_factor+U'*T*U))/forget_factor;
%迭代T(n)=(1/lamda)*[T(n-1)-T(n-1)x(n)x(n)'T(n-1)/lamda+x(n)'T(n-1)x(n)]
end
RLS_w1(k,:)=W_e(1,2:end);
三、结果
通过对比
算法和
算法收敛速度,FIR滤波器的系统函数
中的分母第一个系数
, 经过$
算法自适应80次左右就趋近于-1.6,而
算法远远达不到-1.6,所以我们可以得出对于这种二阶自回归模型产生的非平稳随机信号来说,
算法收敛速度要远超
算法的收敛速度。