Least Mean Square(LMS) 理论分析及替代矩阵求逆示例

码字不易,请尊重!如想转载,请注明原文出处,感谢配合。

原文地址: https://blog.csdn.net/sinat_26681907/article/details/88065982

 

目录

LMS算法概述:

LMS主要原理:

LMS实现步骤:

LMS替代矩阵求逆示例:


LMS算法概述:

LMSLeast Mean Square),源自LEAST-MEAN-SQUARE ADAPTIVE FILTERS,通过迭代的方式估计出待求参数的最优逼近,常用于滤波。

AX=B为例,A, X分别为已知量,X为未知量。常规的求解方式即 X =A^{-1}B求得精确解(将A看成输入信号,X看作未知系统,B看作输出信号,整个过程即滤波,求X即求滤波函数),考虑到矩阵求逆的计算成本及实现方式受限,我们也可以采取迭代的方式逼近精确解,LMS就是其中的一种方式,将估计出的解带入原方程求得B的估计\hat{B},找到使得(B-\hat{B})^{T}(B-\hat{B})的期望最小的X即为最优逼近,Least Mean Square名字的由来也即如此。

LMS主要原理:

给定初始估计X_{0}沿着误差减小的梯度方向更新X便可不断逼近最优解,如式(1)所示, 

                                                                       X_{i+1}=X_{i}-\mu\bigtriangledown(i)                                                                                            (1)

其中\mu控制算法稳定性收敛速度\bigtriangledown (i)控制收敛方向误差e=B-\hat{B}=B-A\hat{X}, 误差的平方e^{2}为二次型,有极小值,对e^{2}关于X求偏导即为\bigtriangledown (i)的一种表示 :

                                                                         \frac{\partial (e^{2})}{\partial X}=-2eA                                                                                                    (2)

将(2)带入(1)即得LMS的迭代更新准则,

                                                                        X_{i+1}=X_{i}+2\mu A^{H}e_{i}                                                                                         (3)

(注,下标i代表迭代次数i,此处为A^{H}e)而非右乘(eA)主要从迭代过程中X的维数一致考虑,取共轭转置将解空间扩大至复数域)

 

LMS实现步骤:

AX=B为例,A, B分别为已知量,X为未知量。)

步骤 1 确定初始估计X_{0},初始步长\mu , 最大迭代次数,误差精度  ;

步骤 2 X_{i}带入原模型中计算B估计值\hat{B}_{i}A\hat{X}_{i}=\hat{B}_{i}   ;

步骤 3 计算B的真实值与估计值之间的误差e_{i}e_{i}=B-\hat{B}_{i} 及误差平方的均值,E[e^{T}_{i}e_{i}] ;

步骤 4 更新X_{i}X_{i+1} = X_{i}+2\mu A^{H}e_{i}   ;

重复步骤2-4,直到误差精度达到期望范围内或迭代达到最大次数为止。

 

 

注:① 原模型有解;

        \mu的选取需要保证算法稳定和收敛,即,0<\mu<\frac{1}{trace(A^{T}A))}

       ③ 迭代次数依赖初始条件和终止条件。


LMS替代矩阵求逆示例:

                                               A=\begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{bmatrix}                                B = \begin{bmatrix} 14 & 32\\ 32 & 77 \end{bmatrix}

已知A,B利用LMS求X

给定X的初始估计

                                                                           X_{0}=\begin{bmatrix} 0 & 0 \\ 0 & 0 \\ 0 & 0 \end{bmatrix}

                                                           \mu=0.5\times \frac{1}{trace(A'A)}=0.0055

设置最大迭代次数Iter = 1e6,误差精度eps = 1e-6,则迭代772次即可得到满足要求的逼近值

                                                                 \hat{X}=\begin{bmatrix} 1.0036 & 3.9985\\ 2.0005 & 4.9998\\ 2.9974 & 6.0011 \end{bmatrix}

X的精确解为

                                                                        X=\begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix}

优化X的初始估计以及\mu,则可保证迭代次数更少收敛速度更快。实验发现,\mu的选取越接近\frac{1}{trace(A'A))},收敛速度越快,所需的迭代次数越少,当\mu>\frac{1}{trace(A'A))}时,算法发散,无法求得最优逼近。

 

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LMS算法和RLS算法是两种常见的自适应滤波算法,下面分别给出它们的主要程序代码实现和收敛性分析。 1. LMS算法 LMS算法主要用于解决线性时不变系统中的自适应滤波问题,其主要思路是通过不断调整滤波器的权重来使得滤波器的输出与期望输出之间的误差最小化。下面是LMS算法的主要程序代码实现: ``` function [y, w] = lms(x, d, step, order) % x: 输入信号 % d: 期望输出 % step: 步长 % order: 滤波器阶数 % y: 滤波器输出 % w: 滤波器权重 N = length(x); w = zeros(order, 1); y = zeros(N, 1); for n = order:N xn = flipud(x(n-order+1:n)); y(n) = w' * xn; e = d(n) - y(n); w = w + step * e * xn; end ``` 其中,x为输入信号,d为期望输出,step为步长,order为滤波器阶数,y为滤波器的输出,w为滤波器的权重。在程序中,我们首先定义了滤波器的初始权重为零向量,然后通过循环计算每个时刻的滤波器输出和误差,不断更新滤波器的权重,最终得到稳定的滤波器输出和权重。 LMS算法的收敛性分析比较复杂,需要通过一系列数学推导来得到收敛条件和收敛速度等性质。一般来说,LMS算法的收敛速度与步长有关,步长过大会导致算法不稳定,步长过小会导致收敛速度较慢。 2. RLS算法 RLS算法也是一种常见的自适应滤波算法,其主要思路是通过不断更新协方差矩阵和权重向量,来使得滤波器的输出与期望输出之间的误差最小化。下面是RLS算法的主要程序代码实现: ``` function [y, w] = rls(x, d, lambda, order) % x: 输入信号 % d: 期望输出 % lambda: 模型遗忘因子 % order: 滤波器阶数 % y: 滤波器输出 % w: 滤波器权重 N = length(x); w = zeros(order, 1); y = zeros(N, 1); P = eye(order) / lambda; for n = order:N xn = flipud(x(n-order+1:n)); y(n) = w' * xn; e = d(n) - y(n); K = P * xn / (1 + xn' * P * xn); w = w + K * e; P = (P - K * xn' * P) / lambda; end ``` 其中,x为输入信号,d为期望输出,lambda为模型遗忘因子,order为滤波器阶数,y为滤波器的输出,w为滤波器的权重,P为协方差矩阵矩阵。在程序中,我们首先定义了协方差矩阵的初始值为单位矩阵除以模型遗忘因子,然后通过循环计算每个时刻的滤波器输出和误差,不断更新协方差矩阵和权重,最终得到稳定的滤波器输出和权重。 RLS算法的收敛性可以通过矩阵分析得到,具体来说,当模型遗忘因子趋近于零时,RLS算法的收敛速度越快,但是过小的模型遗忘因子会导致算法不稳定。与LMS算法不同,RLS算法的收敛速度与滤波器阶数相关,滤波器阶数越高,收敛速度越慢。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值