LMS与RLS算法学习笔记

LMS与RLS算法学习笔记

  • 一、 研究目的
    • 1.1最陡下降法理论
    • 1.2$LMS$算法
    • 1.3$RLS$算法
    • 1.4研究目标
  • 二、代码解析
  • 三、结果

实现代码点击 这里下载

一、 研究目的

1.1最陡下降法理论

LMS算法总是与最陡下降法联合使用,顾名思义,最陡下降法就是沿着性能曲面最陡放方向向下(曲面负梯度方向)搜索曲面的最低点。迭代过程首先从曲面上某个初始点(对应与初始权矢量w(0) )出发,沿着该点负梯度方向搜索至第一点(对应与初始权矢量w(1) ,且w(1)等于初始值w(0)加上一个正比于负梯度的增量 )。以此类推,直到搜索到最低点 w* 。所以最陡下降法迭代计算权矢量的公式为:
w ( n + 1 ) = w ( n ) + μ ( − ∇ ( n ) ) \boldsymbol{w(n+1)}=\boldsymbol{w(n)}+\mu(-\boldsymbol{\nabla}(n)) w(n+1)=w(n)+μ((n))
式中, μ \mu μ是控制搜索步长的参数称为自适应增益常数。那么如何选取合适的 μ \mu μ值?
由于推到十分复杂,这里简单给出结论:
0 < μ < λ m a x − 1 0<\mu<\lambda^{-1}_{max} 0<μ<λmax1
式中, λ m a x \lambda_{max} λmax R ( x ( n ) 自 相 关 矩 阵 ) R(x(n)自相关矩阵) Rx(n)的最大特征值。当然有时为了免去计算 R R R的特征值的麻烦,因为 R R R是正定的,所以有:
t r [ R ] = ∑ k = 0 L λ k > λ m a x t_r[R]=\sum_{k=0}^L\lambda_{k}>\lambda_{max} tr[R]=k=0Lλk>λmax
这里, t r [ R ] t_r[R] tr[R] R R R的迹,它可以用输入信号的取样值进行估计,即:
t r [ R ] = ∑ k = 0 L E [ x i 2 ( n ) ] t_r[R]=\sum_{k=0}^LE[x^2_i(n)] tr[R]=k=0LE[xi2(n)]
所以进一步有:
0 < μ < t r − 1 [ R ] 0<\mu<t_r^{-1}[R] 0<μ<tr1[R]

1.2 L M S LMS LMS算法

由于最陡下降法每次迭代都需要知道性能曲面上某点的梯度值,而实际上梯度值只能根据观察数据进行估计。而 L M S LMS LMS实质上是用平方误差代替均方误差,即:
∇ ( n ) ≈ ∇ ^ ( n ) ≜ ∂ e 2 ( n ) ∂ w = [ ∂ e 2 ( n ) ∂ w 0   ∂ e 2 ( n ) ∂ w 1 ⋯ ∂ e 2 ( n ) ∂ w L ] T \boldsymbol{\nabla}(n)\approx\hat\boldsymbol{\nabla}(n)\triangleq\frac{\partial e^2(n)}{\partial w}=[\frac{\partial e^2(n)}{\partial w_0}\ \frac{\partial e^2(n)}{\partial w_1}\cdots\frac{\partial e^2(n)}{\partial w_L}]^T (n)^(n)we2(n)=[w0e2(n) w1e2(n)wLe2(n)]T
可以得到:
∇ ^ ( n ) = 2 e ( n ) ∂ e ( n ) ∂ w = 2 e ( n ) x ( n ) \hat\boldsymbol{\nabla}(n)=2\boldsymbol{e(n)}\frac{\partial \boldsymbol{e(n)}}{\partial w}=2\boldsymbol{e(n)x(n)} ^(n)=2e(n)we(n)=2e(n)x(n)
得到 L M S LMS LMS算法的基本关系式:
w ( n + 1 ) = w ( n ) − μ ( ∇ ( n ) ) = w ( n ) + 2 μ e ( n ) x ( n ) \boldsymbol{w(n+1)}=\boldsymbol{w(n)}-\mu(\boldsymbol{\nabla}(n))=\boldsymbol{w(n)}+2\mu \boldsymbol{e(n)x(n)} w(n+1)=w(n)μ((n))=w(n)+2μe(n)x(n)
我们可以证明 ∇ ^ ( n ) \hat\boldsymbol{\nabla}(n) ^(n) ∇ ( n ) \boldsymbol{\nabla}(n) (n)的无偏估计,换句话说,如果在每次迭代调整权矢量前能够进行多次观测,获得多个 x ( n ) x(n) x(n),然后一句梯度的统计平均值 E [ ∇ ^ ( n ) ] E[\hat\boldsymbol{\nabla}(n)] E[^(n)]来调整权矢量,则迭代结果必定能得到理想的最佳权矢量。

1.3 R L S RLS RLS算法

R L S RLS RLS算法的关键是用二乘方的时间平均准则取代最小均方准则,并按照时间进行迭代计算,换句话说,对从起始时刻到当前时刻所有误差的平方进行平均并使之最小化,即:
ϵ ( n ) = ∑ k = 0 n e 2 ( k ) = m i n \epsilon(n)=\sum_{k=0}^{n}e^2(k)=min ϵ(n)=k=0ne2(k)=min
其中:
e ( k ) = d ( k ) − y ( k ) e(k)=d(k)-y(k) e(k)=d(k)y(k)
对于,非平稳随机信号,为了更好的跟踪,引入一个指数加权因子对上式进行修正:
ϵ ( n ) = ∑ k = 0 n λ n − k e 2 ( k ) = m i n \epsilon(n)=\sum_{k=0}^{n}\lambda^{n-k}e^2(k)=min ϵ(n)=k=0nλnke2(k)=min
式中, λ \lambda λ称之为遗忘因子,它是小于1的正数,展开上式可以知道,新到的数据比就到的数据更重要。
这里定义两个新的矩阵(被加权后的自相关和互相关),即:
R ( n ) = ∑ k = 0 n λ n − k x ( k ) x T ( k ) \boldsymbol{R}(n)=\sum_{k=0}^{n}\lambda^{n-k}\boldsymbol{x(k)x^T(k)} R(n)=k=0nλnkx(k)xT(k)
P ( n ) = ∑ k = 0 n λ n − k d ( k ) x ( k ) \boldsymbol{P}(n)=\sum_{k=0}^{n}\lambda^{n-k}\boldsymbol{d(k)x(k)} P(n)=k=0nλnkd(k)x(k)
可以推出 R L S RLS RLS算法基本关系:
w ( n ) = w ( n − 1 ) + k ( n ) e ( n ∣ n − 1 ) \boldsymbol{w(n)}=\boldsymbol{w(n-1)}+ \boldsymbol{k(n)e(n|n-1)} w(n)=w(n1)+k(n)e(nn1)
式中,
k ( n ) = T ( n − 1 ) x ( n ) λ + x T ( n ) T ( n − 1 ) x ( n ) \boldsymbol{k(n)}=\frac{\boldsymbol{T(n-1)x(n)}}{{\lambda+\boldsymbol{x^T(n)T(n-1)x(n)}}} k(n)=λ+xT(n)T(n1)x(n)T(n1)x(n)
T ( n ) = R − 1 ( n ) \boldsymbol{T(n)=R^{-1}(n)} T(n)=R1(n)

1.4研究目标

L M S LMS LMS算法和 R L S RLS RLS算法分别设计一个二阶的自适应一步预测横向滤波器,滤波器的输入为二阶AR过程: x ( n ) = a 1 x ( n − 1 ) + a 2 x ( n − 2 ) = ϵ ( n ) x(n)=a_1x(n-1)+a_2x(n-2)=\epsilon(n) x(n)=a1x(n1)+a2x(n2)=ϵ(n),其中 ϵ ( n ) \epsilon(n) ϵ(n)为零均值、单位方差的高斯白噪声,AR模型参数如下:

a 1 a_1 a1 a 2 a_2 a2
-1.6 0.8

分别在步长 μ = 0.002 \mu=0.002 μ=0.002 和遗忘因子 λ = 0.98 \lambda=0.98 λ=0.98 的情况下,分析设计这个二阶的自适应一步预测横向滤波器的LMS 算法,画出自适应FIR滤波器系数 a 1 ( n ) a_1(n) a1(n)的迭代曲线。

二、代码解析

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);

三、结果

LMS与RLS算法学习笔记_第1张图片
通过对比 L M S LMS LMS算法和 R L S RLS RLS算法收敛速度,FIR滤波器的系统函数 1 1 − a 1 z − 1 − a 2 z − 2 \frac{1}{1-a_1z^{-1}-a_2z^{-2}} 1a1z1a2z21中的分母第一个系数 a 1 a_{1} a1, 经过$ R L S RLS RLS算法自适应80次左右就趋近于-1.6,而 L M S LMS LMS算法远远达不到-1.6,所以我们可以得出对于这种二阶自回归模型产生的非平稳随机信号来说, R L S RLS RLS算法收敛速度要远超 L M S LMS LMS算法的收敛速度。

你可能感兴趣的:(学习笔记)