计算最小二乘法详细解释(递推最小二乘法浅谈)

最近有脚友咨询递推最小二乘法估算轮胎侧偏刚度的问题,这个问题挺有代表性的,很多模型参数估计的问题都可以用这个方法解决。所以今天花时间学习下,并把个人的理解分享给大家。

理论篇

如果想系统学习某领域的理论,最好的办法是买一本相关书籍或者下载几篇优秀的论文,阅读了几篇文章之后,总结如下。

定性来看,最小二乘法就是求解一个多元一次方程组,在已知输入、输出的前提下去估算系数,使得实际值与估算值之差的平方和最小。假设需要求解的系数(即需要估计的模型参数)有m个,那么至少需要采集m组以上的数据,方程才有解。当采集的数据刚好为m组时,方程有唯一解,即求解一个m元一次方程组。

一般情况下,采集的数据可以有很多组。当通过传感器实时采集时,就可以实现模型参数的在线估计,这就是本文要谈的递推最小二乘法。

最小二乘法的基本思路是对系统模型进行变换,把系统状态矩阵、输入矩阵中的参数变为状态量,如下式。

计算最小二乘法详细解释(递推最小二乘法浅谈)(1)

其中z(k)、h(k)代表某一组观测数据,可以由输入量、输出量等任何系统可观测的信号构成,θ代表待估计的模型参数。

然后推导出比较核心的递推公式如下(具体推导过程可参考相关论文):

计算最小二乘法详细解释(递推最小二乘法浅谈)(2)

在已知h(k)的前提下,根据前一时刻的P(k-1)可以计算出当前时刻的K(k),知道了K(k)又可以计算出θ(K),P(k)也可以根据K(k)和p(k-1)计算。当然,P(0), θ(0)等初始值需要直接给定。

工具篇

Simulink中有现成的Recursive Least Squares Estimator(RLS)模块,用于递推最小二乘法估计,其模块如下图。

计算最小二乘法详细解释(递推最小二乘法浅谈)(3)

把系统的回归量和输出量作为输入,模块会自己进行迭代计算,逐步计算待估计参数。具体模块设置可参考帮助文档。

这个模块本质上就是把上面三个核心的递推公式封装起来了。

应用篇

这里举一个实际的例子来进行模型参数估计。

假如有这样系统,其状态空间方程表达式为:

计算最小二乘法详细解释(递推最小二乘法浅谈)(4)

用矩阵形式可表示为:

计算最小二乘法详细解释(递推最小二乘法浅谈)(5)

对于这个系统,给定输入u可以得到x1,x2。

对于一个黑盒系统,在得到这些输入输出量以后,就可以通过最小二乘法来估计系统参数m、n。需要对以上的状态空间方程进行变换:

计算最小二乘法详细解释(递推最小二乘法浅谈)(6)

用矩阵形式可表示为(绿色为输入矩阵,红色为输出矩阵):

计算最小二乘法详细解释(递推最小二乘法浅谈)(7)

为了采集数据,我们可以先给定m,n的数值,例如:

计算最小二乘法详细解释(递推最小二乘法浅谈)(8)

给定一个输入u,通过构造输出矩阵就可以得到x1,x2的数据了,获取数据模型如下图。

计算最小二乘法详细解释(递推最小二乘法浅谈)(9)

需要强调的是,在实际的操作上,我们并不知道系统的状态空间方程,这些输入输出数据都是通过传感器采集的。这里直接给出具体的状态空间方程,仅为了从仿真的角度获取数据。

在有了u,x1,x2之后,我们可以很方便得到上面的红色输出矩阵、绿色输入矩阵。这里选择第一行的等式作为RLS模块的输入即可,搭建对应的估计模型如下图。

计算最小二乘法详细解释(递推最小二乘法浅谈)(10)

把对应的输入输出量给到RLS模块接口,就完成了估计模型的搭建。

运行模型,RLS模块输出的参数估计结果如下图。m,n的估计结果很快就收敛了,分别为1.961,0.9908,与真实值m=2,n=1差距较小,估计结果正确。

计算最小二乘法详细解释(递推最小二乘法浅谈)(11)

以上,简要介绍了Simulink中使用递推最小二乘法进行参数估计的方法,总结来看分为三步:

1、建立系统状态空间方程;

2、进行状态空间方程变换;

3、利用观测数据构造RLS模块输入信号。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页