递推最小二乘法求解线性方程组(附MATLAB代码)

前言

  • 参考博文:
  • 关于递推最小二乘法,网上各种资料,让人莫衷一是,故整理其重要部分,述而不作,说的就是我了!
  • 最后附MATLAB代码,实测可用

概述

  • 递推最小二乘法的引入(具体见知乎文章)
    在这里插入图片描述

关键公式

  • 递推公式如下所示(推导见参考书目46页或者知乎文章)
    在这里插入图片描述

MATLAB代码实现

function res = RLS(A,b,num,len)
%num为辨识参数的个数,即A的列数
%len为数据的长度,即A的行数
%求解Ax=b
%res为辨识的参数,即求解得到的x值
format long;
x = rand(num,1);
I = eye(num, num);
P = (10^6) * I;

for k = 1:len
    Ak = A(k,:); %新的数据行,即phi
    Q1 = P*(Ak'); %K(k)的分子
    Q2 = 1 + Ak * P * (Ak'); %K(k)的分母
    K = Q1/Q2;   %更新K(k) 
    x = x + K * (b(k) - Ak*x);  %更新辨识的参数
    P = (I - K*Ak)*P;    %更新P
    thetae(:,k) = x;   %记录每次计算的辨识参数
    steps(k) = k;     %记录当前步数(也可理解为当前用到的数据个数)
end
steps = steps';
res=thetae(:,end);
for i = 1:num
    subplot(num,1,i)
    plot(steps, thetae(i,:));
end
end
  • 8
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值