精华内容
下载资源
问答
  • 最小二乘法参数估计
    万次阅读
    2019-05-08 11:14:06

    应用示例

    from scipy.optimize import leastsq
    
    # 公式求解
    def get_C_formula(X, par):
        DT = X
        alpha, beta = par
        return alpha * DT + beta
    
    # 实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数
    def residuals1(p, y, x): 
        return y - get_C_formula(x, p)
    
    
    # 参数估计
    # residuals误差函数
    # par为拟合参数的初始值
    # args为需要拟合的实验数据
    def get_related_par(x, y, par, residuals):
        plsq = leastsq(residuals, par, args=(y, x)) # 调用leastsq进行数据拟合, residuals为计算误差的函数
        return plsq[0]
    
    # 公式预测
    def get_pre_formula(train_data, all_data):
        par2 = 0.5, 0.5, 0.5
        par2 =  get_related_par([train_data['DT'], train_data['N']], train_data['C'], par2, residuals2)
        y_pre2 = all_data[['N','DT']].apply(lambda row:get_C_formula2([row['DT'], row['N']], par2), axis=1)
        print('参数估计:',par2)
        print ('RMSE2:', get_RMSE(y_pre2, all_data['C'].values))
        return y_pre2

     

    更多相关内容
  • 参数估计-最小二乘法

    2019-01-18 11:35:32
    介绍最小二乘法参数估计,计算系统参数模型的原理,以及推导过程
  • 基于MATLAB的递推最小二乘法辨识与仿真.pdf
  • 最小二乘法用于参数估计,用于检测和参数估计.c语言实现。用六个方程估计3个参数。
  • 简述:参数估计中的最小二乘法

    千次阅读 2020-03-28 23:44:59
    普通最小二乘法只考虑观测向量b的误差,而总体最小二乘法还考虑了数据矩阵 A 的误差, 因此适用于数据矩阵 A 满列秩和数据向量b存在独立同分布的高斯误差的情况。 后者更符合实际并拥有更高的估计精度,所以在统计...

    简述:参数估计中的最小二乘法

    普通最小二乘法简介

    P1
    P2
    P3

    总体最小二乘法简介

    P4
    P5
    P7

    展开全文
  • 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法...
  • 生物数学原理上的参数估计部分,最小二乘法代码,3个文件。
  • 递推最小二乘法matlab程序
  • 1.给定数据集,使用最小二乘法实现对数据的回归; 二、实验内容 1. 分训练和测试两个过程,使用cartdelve数据集里的前若干个数据进行训练,最后100个数据进行测试; 2. 分别使用前100、200、……,1000个数据进行...
  • 使用最小二乘法估计刚体惯性参数,基于: CG Atkeson、CH An 和 JM Hollerbach,“机械臂载荷和连杆的惯性参数估计”,Int。 J. 罗布。 研究,卷。 5,没有。 3,第 101-119 页,1986 年 9 月
  • 最小二乘法的无偏估计

    千次阅读 2020-12-13 17:05:02
    最小二乘法的无偏估计 目前我已知的最小二乘估计法有两种,第一种是基本的最小二乘法,对于白噪声,这类方法可以得到无偏估计。但对于有色噪声,这类方法只能得到有偏估计。为了解决这个问题,就导致了第二类最小...

    最小二乘法的无偏估计

    目前我已知的最小二乘估计法有两种,第一种是基本的最小二乘法,对于白噪声,这类方法可以得到无偏估计。但对于有色噪声,这类方法只能得到有偏估计。为了解决这个问题,就导致了第二类最小二乘法的产生。这类改进算法可以在有色噪声下也能得到无偏估计。

    1. 噪声视为白噪声的最小二乘法
      • 一般最小二乘法
      • 加权最小二乘法
      • 递推最小二乘法(RLS)
      • 渐消记忆RLS法
    2. 噪声视为有色噪声的最小二乘法
      • 广义最小二乘法(GLS)
      • 增广最小二乘法(RELS)
      • 多级最小二乘法(MSLS)

    这篇主要介绍改进后的最小二乘法。 在进入正题之前,先简要阐述白噪声和有色噪声的区别:

    • 白噪声:不同时刻的噪声是不相关的,自相关函数为脉冲函数;
    • 有色噪声:不同时刻的噪声之间存在相关性。在工程实践中,往往是这类噪声。

    1.广义最小二乘法(GLS)

    1.1.系统模型

    系统模型如下所示:
    A ( q − 1 ) y ( k ) = B ( q − 1 ) u ( k ) + ε ( k ) , ε ( k ) = ξ ( k ) C ( q − 1 ) (1) A(q^{-1})y(k)=B(q^{-1})u(k)+\varepsilon(k), \varepsilon(k)=\frac{\xi(k)}{C(q^{-1})} \tag 1 A(q1)y(k)=B(q1)u(k)+ε(k),ε(k)=C(q1)ξ(k)(1)
    上式中, ξ ( k ) \xi(k) ξ(k)为白噪声, ε ( k ) \varepsilon(k) ε(k)为有色噪声序列。三个多项式形式如下所示:
    A ( q − 1 ) = 1 + a 1 q − 1 + . . . + a n a q − n a B ( q − 1 ) = b 0 + b 1 q − 1 + . . . + b n b q − n b C ( q − 1 ) = 1 + c 1 q − 1 + . . . + c n c q − n c (2) \begin{aligned} A(q^{-1})=1+a_1q^{-1}+...+a_{n_a}q^{-{n_a}} \tag 2\\ B(q^{-1})=b_0+b_1q^{-1}+...+b_{n_b}q^{-{n_b}} \\ C(q^{-1})=1+c_1q^{-1}+...+c_{n_c}q^{-{n_c}} \end{aligned} A(q1)=1+a1q1+...+anaqnaB(q1)=b0+b1q1+...+bnbqnbC(q1)=1+c1q1+...+cncqnc(2)
    设系统的输入为白噪声 ξ ( k ) \xi(k) ξ(k),输出为有色噪声 ε ( k ) \varepsilon(k) ε(k),这种线性系统通常称为形成滤波器,如式(1)。

    把式(1)进行等效变换后,可以得到式(3):
    A ( q − 1 ) C ( q − 1 ) y ( k ) = B ( q − 1 ) C ( q − 1 ) u ( k ) + ξ ( k ) (3) A(q^{-1})C(q^{-1})y(k)=B(q^{-1})C(q^{-1})u(k)+\xi(k) \tag 3 A(q1)C(q1)y(k)=B(q1)C(q1)u(k)+ξ(k)(3)
    我们再把上式简化一下,令 { y ˉ ( k ) = C ( q − 1 ) y ( k ) u ˉ ( k ) = C ( q − 1 ) u ( k ) \begin{cases} \bar{y}(k)=C(q^{-1})y(k) \\ \bar{u}(k)=C(q^{-1})u(k) \end{cases} {yˉ(k)=C(q1)y(k)uˉ(k)=C(q1)u(k),就可以得到式(4):
    A ( q − 1 ) y ˉ ( k ) = B ( q − 1 ) u ˉ ( k ) + ξ ( k ) (4) A(q^{-1})\bar{y}(k)=B(q^{-1})\bar{u}(k)+\xi(k) \tag 4 A(q1)yˉ(k)=B(q1)uˉ(k)+ξ(k)(4)

    此时的噪声 ξ ( k ) \xi(k) ξ(k)已经是白噪声,可以直接使用LS法对系统参数进行无偏估计。

    1.2.噪声模型

    式(4)就是GLS的关键公式。但为了获得这个公式,我们必然先得到 C ( q − 1 ) C(q^{-1}) C(q1),这就需要我们对噪声模型进行估计。

    根据系统模型表达式(1),可以得到关于噪声的差分方程描述:
    ε ( k ) = 1 C ( q − 1 ) ξ ( k ) ⟹ C ( q − 1 ) ε ( k ) = ξ ( k ) ⟹ ε ( k ) = − c 1 ε ( k − 1 ) − . . . c n c ε ( k − n c ) + ξ ( k ) \begin{aligned} \varepsilon(k)=\frac{1}{C(q^{-1})}\xi(k) &\Longrightarrow C(q^{-1})\varepsilon(k)=\xi(k) \\ &\Longrightarrow \varepsilon(k)=-c_1\varepsilon(k-1)-...c_{n_c}\varepsilon(k-n_c)+\xi(k) \end{aligned} ε(k)=C(q1)1ξ(k)C(q1)ε(k)=ξ(k)ε(k)=c1ε(k1)...cncε(knc)+ξ(k)
    由上式得到 N N N个方程,将其写成矩阵形式如下:
    ε = Ω f + ξ \varepsilon=\Omega f + \xi ε=Ωf+ξ
    根据最小二乘法,我们可以得到 C ( q − 1 ) C(q^{-1}) C(q1)的估计值 f f f
    f = ( Ω T Ω ) − 1 Ω T ε f=(\Omega^T \Omega)^{-1}\Omega^T\varepsilon f=(ΩTΩ)1ΩTε
    但这里存在一个问题:我们无法对噪声进行直接测量。也就是说,我们无法得到 Ω , ε \Omega,\varepsilon Ω,ε

    一种方法是对误差进行估计,用残差 e ( k ) e(k) e(k)代替噪声 ε ( k ) \varepsilon(k) ε(k)
    e ( k ) = A ^ ( q − 1 ) y ( k ) − B ^ ( q − 1 ) u ( k ) (5) e(k)=\hat{A}(q^{-1})y(k)-\hat{B}(q^{-1})u(k) \tag 5 e(k)=A^(q1)y(k)B^(q1)u(k)(5)
    以上公式(3)、(4)、(5)就是推导GLS的主要公式了。

    1.3.主要步骤

    广义最小二乘法的基本思想:

    • 先不考虑有色噪声,用一般LS法估计系统参数 a i , b i a_i,b_i ai,bi,得到有偏估计 a ^ i ( 1 ) , b ^ i ( 1 ) \hat{a}^{(1)}_i,\hat{b}^{(1)}_i a^i(1),b^i(1)
    • 再用有偏估计 a ^ i ( 1 ) , b ^ i ( 1 ) \hat{a}^{(1)}_i,\hat{b}^{(1)}_i a^i(1),b^i(1)去估计噪声模型 c i c_i ci
    • 已知噪声模型后,根据等式(4)再去估计系统参数 a ^ i ( 2 ) , b ^ i ( 2 ) \hat{a}^{(2)}_i,\hat{b}^{(2)}_i a^i(2),b^i(2)

    以上反复迭代后即可得到系统参数的无偏估计。

    (1)用一般LS法得到系统参数的有偏估计

    在GLS一开始,我们先不考虑噪声是白噪声还是有色噪声,直接当作白噪声用LS法进行估计,当然这次的估计值不会很准确,因为是一个有偏估计。但作为参数估计的初始值已经可以了,后面会再进行修正。
    A ( q − 1 ) y ( k ) = B ( q − 1 ) u ( k ) + ε ( k ) A(q^{-1})y(k)=B(q^{-1})u(k)+\varepsilon(k) A(q1)y(k)=B(q1)u(k)+ε(k)
    第一次参数估计的结果为
    θ ^ ( 1 ) = ( Φ T Φ ) − 1 Φ T y \hat{\theta}^{(1)}=(\Phi^T\Phi)^{-1}\Phi^Ty θ^(1)=(ΦTΦ)1ΦTy

    (2)用估计值 θ ^ \hat{\theta} θ^估计噪声模型参数 f f f

    在已有系统参数估计值的情况下,通过式(5),就可以得到噪声 ε ( k ) \varepsilon(k) ε(k)的估计值 e ( k ) e(k) e(k)。根据 N N N个等式(5),我们可以得到

    • Ω \Omega Ω N × n c N \times n_c N×nc
    • e e e N × 1 N \times 1 N×1

    然后使用LS法对噪声参数进行估计,结果为
    f ^ ( 1 ) = ( Ω T Ω ) − 1 Ω T e \hat{f}^{(1)}=(\Omega^T \Omega)^{-1}\Omega^Te f^(1)=(ΩTΩ)1ΩTe

    (3)用噪声估计参数 f ^ \hat{f} f^对系统估计参数 θ ^ \hat{\theta} θ^进行修正

    得到噪声模型后,我们就可以得到 y ˉ ( k ) , u ˉ ( k ) \bar{y}(k),\bar{u}(k) yˉ(k),uˉ(k),然后应用式(4),通过最小二乘法对系统参数进行修正:
    θ ^ ( 2 ) = ( Φ ˉ T Φ ˉ ) − 1 Φ ˉ T y ˉ ( k ) \hat{\theta}^{(2)}=(\bar{\Phi}^T\bar{\Phi})^{-1}\bar{\Phi}^T\bar{y}(k) θ^(2)=(ΦˉTΦˉ)1ΦˉTyˉ(k)
    最后,重复步骤(2)~(3),直到估计值 θ ^ ( i ) \hat{\theta}^{(i)} θ^(i)收敛。

    2.增广矩阵法(RELS)

    2.1.系统模型与公式推导

    考虑这样的一个系统(注意GLS和RELS的系统模型的差别):
    A ( q − 1 ) y ( k ) = B ( q − 1 ) u ( k ) + C ( q − 1 ) ξ ( k ) (1) A(q^{-1})y(k)=B(q^{-1})u(k)+C(q^{-1})\xi(k) \tag 1 A(q1)y(k)=B(q1)u(k)+C(q1)ξ(k)(1)
    上式中, ξ ( k ) \xi(k) ξ(k)是新息序列,具有白噪声特征。三个多项式形式如下所示:
    A ( q − 1 ) = 1 + a 1 q − 1 + . . . + a n a q − n a B ( q − 1 ) = b 0 + b 1 q − 1 + . . . + b n b q − n b C ( q − 1 ) = 1 + c 1 q − 1 + . . . + c n c q − n c (2) \begin{aligned} A(q^{-1})=1+a_1q^{-1}+...+a_{n_a}q^{-{n_a}} \tag 2\\ B(q^{-1})=b_0+b_1q^{-1}+...+b_{n_b}q^{-{n_b}} \\ C(q^{-1})=1+c_1q^{-1}+...+c_{n_c}q^{-{n_c}} \end{aligned} A(q1)=1+a1q1+...+anaqnaB(q1)=b0+b1q1+...+bnbqnbC(q1)=1+c1q1+...+cncqnc(2)
    增广矩阵法的特点是把噪声模型参数也加入到了估计参数中,相当于扩充被估计参数的维数,然后再用最小二乘法同时估计系统参数和噪声参数。
    θ = [ a 1 . . . a n a b 0 . . . b n b c 1 . . . c n c ] T \theta=\begin{bmatrix} a_1 & ... & a_{n_a} & b_0 & ... & b_{n_b} & c_1 & ... & c_{n_c} \end{bmatrix}^T θ=[a1...anab0...bnbc1...cnc]T
    根据式(1),我们可以得到以下形式:
    y ( k ) = Ψ k T θ + ξ ( k ) ,    k = n + 1 , . . . , n + N (3) y(k)= \Psi_k^T \theta + \xi(k), \; k=n+1,...,n+N \tag 3 y(k)=ΨkTθ+ξ(k),k=n+1,...,n+N(3)

    Ψ k = [ − y ( k − 1 ) . . . − y ( k − n a ) u ( k ) . . . u ( k − n b ) ξ ( k − 1 ) . . . ξ ( k − n c ) ] T \Psi_k = \begin{bmatrix} -y(k-1) & ... & -y(k-n_a) & u(k) & ... & u(k-n_b) & \xi(k-1) & ... & \xi(k-n_c) \end{bmatrix}^T Ψk=[y(k1)...y(kna)u(k)...u(knb)ξ(k1)...ξ(knc)]T

    把上式扩展为 N N N个方程,就是一个标准的最小二乘法形式。但与广义最小二乘法遇到的问题一样,我们无法直接测量噪声数据,因此需要对 ξ ( k ) \xi(k) ξ(k)进行估计。 方法也与GLS一样,用残差 e ( k ) e(k) e(k)来估计噪声 ξ ( k ) \xi(k) ξ(k)
    Ψ k = [ − y ( k − 1 ) . . . − y ( k − n a ) u ( k ) . . . u ( k − n b ) ξ ^ ( k − 1 ) . . . ξ ^ ( k − n c ) ] T \Psi_k = \begin{bmatrix} -y(k-1) & ... & -y(k-n_a) & u(k) & ... & u(k-n_b) & \hat{\xi}(k-1) & ... & \hat{\xi}(k-n_c) \end{bmatrix}^T Ψk=[y(k1)...y(kna)u(k)...u(knb)ξ^(k1)...ξ^(knc)]T
    根据式(3),可以得到噪声的估计 ξ ^ ( k ) \hat{\xi}(k) ξ^(k)表示为:
    ξ ^ ( k ) = y ( k ) − Ψ k T θ ^ (4) \hat{\xi}(k)=y(k)-\Psi_k^T \hat{\theta} \tag 4 ξ^(k)=y(k)ΨkTθ^(4)
    根据递推最小二乘法的方式,我们可以得到增广矩阵法的递推方程:
    K N + 1 = P N Ψ ^ N + 1 ( 1 + Ψ ^ N + 1 T P N Ψ ^ N + 1 ) − 1 P N + 1 = P N − K N + 1 Ψ ^ N + 1 T P N θ ^ N + 1 = θ ^ N + K N + 1 ( y N + 1 − Ψ ^ N + 1 T θ ^ N ) (5) \begin{aligned} K_{N+1}&=P_N \hat{\Psi}_{N+1}(1+\hat{\Psi}_{N+1}^TP_N\hat{\Psi}_{N+1})^{-1} \tag 5 \\ P_{N+1}&=P_N-K_{N+1}\hat{\Psi}_{N+1}^TP_N \\ \hat{\theta}_{N+1}&=\hat{\theta}_{N}+K_{N+1}(y_{N+1}-\hat{\Psi}_{N+1}^T \hat{\theta}_N) \end{aligned} KN+1PN+1θ^N+1=PNΨ^N+1(1+Ψ^N+1TPNΨ^N+1)1=PNKN+1Ψ^N+1TPN=θ^N+KN+1(yN+1Ψ^N+1Tθ^N)(5)

    3.GLS vs RELS

    由上面可知,GLS和RELS对于有色噪声的处理方式是不同的,下式(1)与(2)分别是GLS和RELS对有色噪声的处理方法, ξ ( k ) \xi(k) ξ(k)为白噪声。
    A ( q − 1 ) y ( k ) = B ( q − 1 ) u ( k ) + ε ( k ) , ε ( k ) = 1 D ( q − 1 ) ξ ( k ) (1) A(q^{-1})y(k)=B(q^{-1})u(k)+\varepsilon(k),\varepsilon(k)=\frac{1}{D(q^{-1})}\xi(k) \tag 1 A(q1)y(k)=B(q1)u(k)+ε(k),ε(k)=D(q1)1ξ(k)(1)

    A ( q − 1 ) y ( k ) = B ( q − 1 ) u ( k ) + ε ( k ) , ε ( k ) = C ( q − 1 ) ξ ( k ) (2) A(q^{-1})y(k)=B(q^{-1})u(k)+\varepsilon(k),\varepsilon(k)=C(q^{-1})\xi(k) \tag 2 A(q1)y(k)=B(q1)u(k)+ε(k),ε(k)=C(q1)ξ(k)(2)

    虽然两者对噪声的表示形式不同,但这并不会影响最后的参数估计结果。 在进行参数辨识时,系统参数的估计值应该是一致的,区别在于对噪声模型的估计会不一样。

    下面对一组数据分别用GLS、RELS进行参数辨识。

    系统模型如下所示,参数真值为 a 1 = − 1.5 , a 2 = 0.7 , b 0 = 0 , b 1 = 1 , b 2 = 0.5 a_1=-1.5,a_2=0.7,b_0=0,b_1=1,b_2=0.5 a1=1.5,a2=0.7,b0=0,b1=1,b2=0.5
    y ( k ) + a 1 y ( k − 1 ) + a 2 y ( k − 2 ) = b 0 u ( k ) + b 1 u ( k − 1 ) + b 2 u ( k − 2 ) + ε ( k ) y(k)+a_1y(k-1)+a_2y(k-2)=b_0u(k)+b_1u(k-1)+b_2u(k-2)+\varepsilon(k) y(k)+a1y(k1)+a2y(k2)=b0u(k)+b1u(k1)+b2u(k2)+ε(k)

    ε ( k ) = ξ ( k ) + c 1 ξ ( k − 1 ) + c 2 ξ ( k − 2 ) \varepsilon(k)=\xi(k)+c_1\xi(k-1)+c_2\xi(k-2) ε(k)=ξ(k)+c1ξ(k1)+c2ξ(k2)

    上式的噪声表示形式与RELS的表示形式相同,可以直接用RELS进行参数辨识。RELS的辨识结果为
    θ ^ = [ − 1.5071 0.7006 − 0.0372 1.0410 0.4801 ] T , J = 40.6337 \hat{\theta}=\begin{bmatrix} -1.5071 & 0.7006 & -0.0372 & 1.0410 & 0.4801 \end{bmatrix}^T,J=40.6337 θ^=[1.50710.70060.03721.04100.4801]T,J=40.6337
    在这里插入图片描述

    对于GLS,噪声 ε ( k ) \varepsilon(k) ε(k)可以设为另外一种形式,即
    ε ( k ) + f 1 ε ( k − 1 ) + f 2 ε ( k − 2 ) = ξ ( k ) ⟹ ε ( k ) = 1 1 + f 1 q − 1 + f 2 q − 2 ξ ( k ) \varepsilon(k)+f_1\varepsilon(k-1)+f_2\varepsilon(k-2)=\xi(k) \Longrightarrow \varepsilon(k)=\frac{1}{1+f_1q^{-1}+f_2q^{-2}}\xi(k) ε(k)+f1ε(k1)+f2ε(k2)=ξ(k)ε(k)=1+f1q1+f2q21ξ(k)
    GLS的辨识结果为
    θ ^ = [ − 1.5170 0.7115 − 0.0220 1.0441 0.4572 ] T , J = 40.7475 \hat{\theta}=\begin{bmatrix} -1.5170 & 0.7115 & -0.0220 & 1.0441 & 0.4572 \end{bmatrix}^T,J=40.7475 θ^=[1.51700.71150.02201.04410.4572]T,J=40.7475
    在这里插入图片描述

    由上可见,虽然两种方式对噪声的表示方式不同,但它们最终得到的系统参数的估计结果是相近,最终都收敛到了真实值。

    展开全文
  • 介绍最小二乘法参数估计,计算系统参数模型的方法和原理,以及推导过程
  • 为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将最小二乘法转换成参数递推的估计。 取前N组数据,然后从N+1项后向后迭代,当前估计值=上一次估计值+修正值。 给定过程: 式中,理想的系数值a1=1.5,a2=...

    一、递归最小二乘法

    递推最小二乘法:当矩阵维数增加时,矩阵求逆运算计算量过大,而且不适合在线辨识。为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将最小二乘法转换成参数递推的估计。

    取前N组数据,然后从N+1项后向后迭代,当前估计值=上一次估计值+修正值

    给定过程:
    在这里插入图片描述式中,理想的系数值a1=1.5,a2=0.7,b1=1.0b2=0.5V(k)服从N(0,1)的随机噪声。

    clear all
    close all
    clc
    %产生N(0,1)正态分布的随机噪声
    randn('seed',100);
    v=randn(1,60); 
    
    %产生M序列
    L=60;% M序列的周期
    y1=1;y2=1;y3=1;y4=0;%四个移位积存器的输出初始值
    for i=1:L;
    x1=xor(y3,y4);
    x2=y1;
        x3=y2;
        x4=y3;
        y(i)=y4;
        if y(i)>0.5,u(i)=-5;%M序列的幅值为5
        else u(i)=5;
        end
        y1=x1;y2=x2;y3=x3;y4=x4;
    end 
    figure(1);
    stem(u),grid on
    % 递推最小二乘辨识程序
    z(2)=0;z(1)=0;
    %观测值由理想输出值加噪声
    for k=3:60;%循环变量从315   
        z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+0.5*v(k); 
    end
    %RLS递推最小二乘辨识
    c0=[0.001 0.001 0.001 0.001]';
    p0=10^3*eye(4,4);
    E=0.000000005;%相对误差
    c=[c0,zeros(4,59)];%被辨识参数矩阵的初始值及大小
    e=zeros(4,60);%相对误差的初始值及大小
    lamt=1;
    for k=3:60; 
        h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';
        k1=p0*h1*inv(h1'*p0*h1+1*lamt);%求出K的值
        new=z(k)-h1'*c0; 
        c1=c0+k1*new;%求被辨识参数c
        p1=1/lamt*(eye(4)-k1*h1')*p0;
        e1=(c1-c0)./c0;%求参数当前值与上一次的值的差值
        e(:,k)=e1; %把当前相对变化的列向量加入误差矩阵的最后一列    
        c(:,k)=c1;%把辨识参数c 列向量加入辨识参数矩阵的最后一列 
        c0=c1;%新获得的参数作为下一次递推的旧参数
        p0=p1;
        if norm(e1)<=E 
            break;%若参数收敛满足要求,终止计算
        end
    end
    %分离参数
    a1=c(1,:); a2=c(2,:); b1=c(3,:); b2=c(4,:); 
    ea1=e(1,:); ea2=e(2,:); eb1=e(3,:); eb2=e(4,:); 
    figure(2);
    i=1:60;
    plot(i,a1,'k',i,a2,'b',i,b1,'r',i,b2,'g') %画出辨识结果
    legend('a1','a2','b1','b2');
    title('递推最小二乘参数辨识')
    figure(3); 
    i=1:60; 
    plot(i,ea1,'k',i,ea2,'b',i,eb1,'r',i,eb2,'g') %画出辨识结果的收敛情况
    legend('a1','a2','b1','b2');
    title('辨识精度')
    

    在这里插入图片描述

    二、增广最小二乘法

    增广最小二乘法:当噪声均值为0时,最小二乘法参数估计算法为无偏估计,为了解决最小二乘法参数估计的有偏性,将噪声模型的辨识同时考虑进去,就是增广最小二乘法。

    增广最小二乘法相当于参数向量和数据向量维数扩大了的最小二乘法,它能在有色噪声(可用平均滑动模型来表示)情况下给出参数的一致估计量,同时可以把噪声模型也辨识出来。

    给定过程:
    在这里插入图片描述
    式中,理想的系数值a1=1.5,a2=0.7,b1=1.0b2=0.5,c1=1.2,c2=-1.0,c3=0.2V(k)服从正态分布的白噪声N(0,1),输入信号采用4M序列,其幅值为1

    clear all
    close all
    clc
    
    % M序列、噪声信号产生及其显示程序 
    L=60;%四位移位积存器产生的M序列的周期
    y1=1;y2=1;y3=1;y4=0;
    for i=1:L;
        x1=xor(y3,y4);
        x2=y1;
        x3=y2;
        x4=y3;
        y(i)=y4;
        if y(i)>0.5,u(i)=-1;
        else u(i)=1;
        end
        y1=x1;y2=x2;y3=x3;y4=x4;
    end
    figure(1);
    stem(u),grid on%画出M序列输入信号
    randn('seed',100)
    v=randn(1,60); %产生一个N(0,1)的随机噪声
    %增广递推最小二乘辨识
    z(2)=0;z(1)=0;
    theat0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]';%直接给出被辨识参数的初始值,即一个充分小的实向量
    p0=10^4*eye(7,7);%初始状态P0
    theat=[theat0,zeros(7,59)];%被辨识参数矩阵的初始值及大小
    for k=3:60; 
        z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+1.2*v(k)-v(k-1)+0.2*v(k-2)  
        h1=[-z(k-1),-z(k-2),u(k-1),u(k-2),v(k),v(k-1),v(k-2)]';
        x=h1'*p0*h1+1;
        x1=inv(x); 
        k1=p0*h1*x1; %K
        d1=z(k)-h1'*theat0; 
        theat1=theat0+k1*d1;%辨识参数c 
        theat0=theat1;%给下一次用
        theat(:,k)=theat1;%把辨识参数c 列向量加入辨识参数矩阵 
        p1=p0-k1*k1'*[h1'*p0*h1+1];%find p(k)
        p0=p1;%给下次用
       end%循环结束
    
    
    %分离变量
        a1=theat(1,:); a2=theat(2,:); b1=theat(3,:); b2=theat(4,:);
        c1=theat(5,:); c2=theat(6,:); c3=theat(7,:); 
    i=1:60;    
    figure(2);
    plot(i,z)
    figure(3)
    plot(i,a1,'r',i,a2,'b',i,b1,'k',i,b2,'y',i,c1,'g',i,c2,'c',i,c3,'m')%画出各个被辨识参数
    title('增广递推最小二乘辨识方法')%标题
    

    在这里插入图片描述

    三、带遗忘因子的递归增广最小二乘法的参数估计

    遗忘因子算法的基本思想为:对老数据乘以遗忘因子,以降低老数据所提供的信息量,增加新数据的信息量。前一时刻的数据乘以较小的权,后一时刻的数据乘以较大的权,表示对新的数据较为重视,对老数据所起的作用逐渐削弱。
    在这里插入图片描述

    %开环系统参数辨识,带遗忘因子的递推最小二乘估计法(FFRLS),系统为单入单出的CAR(带控制量的自回归模型)模型,三阶系统
    clear all
    clc
    a=[1 -1.1 0.6 0.1];b=[1 0.7];d=4; %实际模型系数矩阵与纯迟延
    L=1000;                           %仿真长度
    na=length(a)-1;nb=length(b)-1;    %na,nb为输出输入系数矩阵A,B的阶数
    yk=zeros(na,1);                   %输出矩阵初始化
    yk_m=zeros(na,1);                 %模型输出
    uk=zeros(nb+d,1);                 %输入矩阵初始化
    theta_e0=zeros(na+nb+1,1);        %theta_e0为估计参数初值,a1,a2....an,b0,b1,...bn,共na+nb+1个
    phi=zeros(na+nb+1,1);             %phi为当前实际输出输入构成的矩阵
    P=10^6*eye(na+nb+1);              %修正系数初值
    beta=0.99;                        %遗忘因子,在0.951之间
    u=randn(L,1);                     %输入信号,方差为1的白噪声序列
    omega=sqrt(0.1)*randn(L,1);       %干扰信号,方差为0.1的白噪声序列
    
    for i=1:L
        theta(:,i)=[a(2:na+1),b]';    %系统实际参数值
        
        phi=[-yk;uk(d:d+nb)];         %系统输出输入矩阵
        phi_e=[-yk_m;uk(d:d+nb)];     %模型输出输入矩阵
        y(i)=phi'*theta(:,i)+omega(i);%系统实际输出
        y_m(i)=phi_e'*theta_e0;       %模型输出
        
        %递推公式
        K=P*phi/(beta+phi'*P*phi);   
        theta_e(:,i)=theta_e0+K*(y(i)-phi'*theta_e0);
        P=(eye(na+nb+1)-K*phi')*P/beta;
        
        %数据更新
        theta_e0=theta_e(:,i);
        for j=na:-1:2
            yk(j)=yk(j-1);
            yk_m(j)=yk_m(j-1);
        end
        yk(1)=y(i);
        yk_m(1)=y_m(i);
        
        for j=(nb+d):-1:2
            uk(j)=uk(j-1);
        end
        uk(1)=u(i);
    end
    
    figure
    x=[1:L];
    plot(x,theta_e,x,theta,'k:');
    legend('a1','a2','a3','b1','b2');
    axis([0 L -2 2]);
    figure
    plot(x,y,x,y_m,'r');
    legend('实际输出','模型输出');
    axis([0 L -20 20]);
    grid on;
    

    在这里插入图片描述
    在这里插入图片描述

    参考文献:

    [1]方桂花,王鹤川,高旭.基于动态遗忘因子递推最小二乘法的永磁同步电机参数辨识算法[J].计算机应用与软件,2021,38(01):280-283.
    [2]冯亦奇,陈勇.基于遗忘因子的UKF车辆状态参数估计算法[J].合肥工业大学学报(自然科学版),2020,43(11):1450-1455+1499.
    [3]焦慧方,陈希亮,高敏,马忠玲.基于带遗忘因子交替广义最小二乘法的多变量耦合系统参数辨识[J].咸阳师范学院学报,2018,33(02):49-53.

    展开全文
  • 如何用最小二乘法进行曲线的参数估计?这是日常工作中最常碰到的问题,此文一步一步为你道来!
  • 最小二乘法及其代码实现

    千次阅读 2020-05-02 10:34:47
    一元线性回归下及多元线性回归下的最小二乘法讲解以及最小二乘法的代码实现和实例 **最小二乘法**就是用过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便的求得未知的数据。
  • 二、最小二乘法求一元线性回归方程 回归分析中要确定一个一元线性回归方程,很简单,只需要通过样本数据求出公式中a和b两个参数的值,一元线性回归方程就唯一确定。 a和b如何确定,有一种比较好的计算方法,叫做...
  • 基于最小二乘法的AR模型参数估计的matlab代码。
  • 最小二乘法曲线拟合参数估计:简单起见,这里以一元线性回归为例进行介绍:假设我们获取了一组样本点数据:利用最小二乘法用多项式曲线拟合这组样本点:1、设拟合多项式为:2、样本点到该曲线的距离平方和为:目标...
  • 以锚节点作为参考节点,采用基于均值滤波、中值滤波和高斯滤波的混合滤波方法优化RSSI值,运用最小二乘法估计环境参数,再由盲节点与锚节点的RSSI混合滤波优化值计算二者之间的距离。仿真结果表明,混合滤波性能优于其它...
  • 该资源为递推最小二乘Matlab的代码。其中,对象模型参数已知,仿真长度400。
  • 最小二乘法实现代码

    2020-04-30 10:21:33
    实现过程: 使用到了numpy的inv(矩阵的逆) dot(点乘) array和mat区别主要是维度不同 矩阵A,转置为A.T 。reshape既能实现转置又可以转换成为任意格式 ...
  • MATLAB实现最小二乘法

    万次阅读 多人点赞 2017-04-17 15:10:28
    最小二乘法  最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。  利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为...
  • 6.1 误差曲面的近似 6.2 Gauss-Newton方法 6.3 梯度下降方法 6.4 Levenberg-Marquardt方法 7 参考书籍 1 什么是“最小二乘” 要想确定N个未知参数,就得至少有N个线性独立的方程。其中:1、如果方程个数低于未知数个...
  • 递推最小二乘实现参数估计,对不确定的系统有良好的参数估计效果。
  • 基于相位差校正和最小二乘法的电力谐波参数估计,秦媛倩,唐轶,电网频率是重要的电能质量指标之一,频率的高精度测量同时也是许多应用技术的基础。本文首先介绍一种基于加窗相位差校正的电网频
  • 一文让你彻底搞懂最小二乘法(超详细推导)

    万次阅读 多人点赞 2020-06-03 15:25:41
    最小二乘法是一种最常用的解决回归问题的方法,它通过最小化误差的平方和来寻找 拟合数据的最佳匹配函数,本文详细介绍了最小二乘法的原理,并从几何角度解释了最小二乘法的几何意义
  • 最小二乘法推导

    万次阅读 2019-05-10 14:26:13
    普通最小二乘法(ordinary least squares,OLS)是线性回归预测问题中一个很重要的概念,在Introductory Econometrics A Modern Approach (Fourth Edition)第2章 简单回归模型 中,花了很详细的篇幅对此作出介绍。...
  • 系统辨识与参数估计 最小二乘法 MATLAB
  • 最小二乘法(OLS)是最基本的线性回归模型估计方法。 小样本OLS 古典线性回归模型假定 古典线性回归模型有以下几个假定 线性假定。
  • 线性最小二乘法的系数方差估计

    千次阅读 2019-11-28 22:44:56
    线性模型 y=Xβ+ϵ y = X \beta+\epsilon y=Xβ+ϵ ...最小二乘法的解为 β^=(XTX)XTy=X+y \hat{\beta} = (X^TX)X^Ty = X^{+}y β^​=(XTX)XTy=X+y 无偏估量性质 E(β^)=E(X+y)=E(X+(Xβ+ϵ))=E(β...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,834
精华内容 5,933
关键字:

最小二乘法参数估计

友情链接: m32r_ksyms.rar