一. RLS(递归最小二乘)算法介绍
RLS(Recursive Least Squares,递归最小二乘)算法是一种自适应滤波算法,用于通过递归方式求解最小二乘问题。它是传统最小二乘法的在线学习版本,能够实时更新系统参数估计。
1.1 基本概念
RLS算法的主要特点:
- 递归计算:新数据到来时,不需要重新计算全部数据,只需基于前一时刻的估计进行更新
- 快速收敛:通常比LMS(最小均方)算法收敛更快
- 计算复杂度较高:相比LMS算法需要更多的计算资源
1. 2最小二乘问题回顾
标准最小二乘问题的目标是最小化误差平方和:
其中:
- w是待估计的参数向量(滤波器系数)
- u(i) 是第 i 个输入向量(回归变量)
- d(i) 是期望输出(观测数据)
- n 是数据点数
在批处理最小二乘中,解为:
但批处理方法计算量大,且无法适应在线数据流。RLS 采用递归更新方式,逐样本更新估计值。
二. RLS算法推导
1.问题背景
给定线性模型:
其中:
- y(n) :第 n 时刻的观测值
- x(n) :n 时刻的输入向量( N * 1 )
- h(n):待估计的参数向量( N * 1 )
- v(n) :噪声
2.目标:通过递归方式最小化加权误差平方和:
λ:遗忘因子(0<λ≤1),用于降低旧数据的影响
3.定义自相关与互相关矩阵
自相关矩阵:
互相关矩阵:
4:最小二乘解
最优参数估计:
5:递归更新
利用矩阵求逆引理(Sherman-Morrison-Woodbury)实现递归更新:
三.. RLS算法流程
四. 关键参数与特性
-
遗忘因子λλ:
-
λ≈1:长记忆(适用于稳态系统)。
-
λ<1:快速跟踪时变系统(典型值0.95-0.99)。
-
-
计算复杂度:
-
O(N2)每次迭代(因需更新P(n))。
-
比LMS算法(O(N))更高,但收敛更快。
-
-
优点:
-
指数收敛,无梯度噪声。
-
适用于非平稳信号(如通信信道均衡)。
-
-
缺点:
-
数值稳定性需注意(可通过平方根RLS改进)。
-
高计算成本。
-
五.代码实现(与LMS算法对比)
clear all;close all;
k=5;%表示参数的个数
L=2000;%表示输入长度
w0=randn(k,1);%待估计的真实参数
Uk=randn(k,L);%更新输入的值
Vc=randn(1,L)*0.1;%噪声,0.1表示噪声的强度
Dk=w0'*Uk+Vc;%表示观测值
wk_rls=zeros(k,1);%初始化参数估计
P_rls=eye(k);%初始化逆自相关矩阵
lmd=1;%表示遗忘因子
%RLS
for n=1:L
dn=Dk(n);%表示第n个观测值
un=Uk(:,n);%表示n时刻的输入值,N*1
en=dn-wk_rls'*un;%误差
kn=P_rls*un/(lmd+un'*P_rls*un);%增益向量
P_rls=1/lmd*(P_rls-kn*un'*P_rls);%更新逆自相关矩阵
Err_rls(n)=norm(w0-wk_rls);%计算参数误差,欧氏距离
wk_rls=wk_rls+kn*en;%更新参数
end
%LMS
wk_lms=zeros(k,1);%参数初始化
mu=0.005;%步长,需要调试
for n=1:L
dn=Dk(n);%表示第k个观测值
un=Uk(:,n);%表示k时刻的输入值,n*1
en=dn-wk_lms'*un;%误差
Err_lms(n)=norm(w0-wk_lms);
wk_lms=wk_lms+mu*en*un;
end
figure,hold on;
grid on;
plot(log(Err_rls));
plot(log(Err_lms));
legend('RLS','LMS');
很明显,RLS收敛的更快。