您好,欢迎访问三七文档
常规最小二乘辨识的递推算法主要内容1.思想及原理2.实例与MATLAB仿真3.应用1.递推最小二乘法的思想及原理1.1递推最小二乘法的引入*最小二乘法的缺陷(1)数据量越多,系统参数估计的精度就越高,为了获得满意的辨识结果,矩阵的阶数常常取得相当大。这样矩阵求逆的计算量很大,存储量也很大。(2)每增加一次观测量,都必须重新计算φ,()-1。(3)如果出现φ列相关,既不满秩的情况,为病态矩阵,则不能得到最小二乘估计值。*递推最小二乘参数辨识,就是当被辨识的系统在运行时,每取得一次新的观测数据后,就在前一次估计结果的基础上,利用新引入的观测数据对前次估计的结果,根据递推算法进行修正,从而递推地得出新的参数估计值。这样,随着新的观测数据的逐次引入,一次接一次的进行参数计算,直到参数估计值达到满意的精确程度为止。TTT1.2递推算法的思想*递推辨识算法的思想可以概括成新的参数估计值=旧的参数估计值+修正项即新的递推参数估计值是在旧的递推估计值的基础上而成,这就是递推的概念.递推算法不仅可减少计算量和存储量,而且能实现在线实时辨识.*递推算法是依时间顺序,每获得一次新的观测数据就修正一次参数估计值,随着时间的推移,便能获得满意的辨识结果.RLS法即为成批型LS算法的递推化,即将成批型LS算法化成依时间顺序递推计算即可。该工作是1950年由Plackett完成的。*下面讨论无加权因素时的一般LS法的递推算法的推导.即将成批型算法化等效变换成如下所示的随时间演变递推算法.时不变SISO系统数学模型:A(z-1)y(k)=B(z-1)u(k)+e(k)baniiiniiizbzzaz1111)(1)(BALLLLYΦ)ΦΦ(θ1LS已知系统的输入u(k)和输出y(k),求参数ai,bi的估计值。可以得到向量形式的线性方程组:Y=+eY=[y(1),y(2),...,y(L)]T=[(0),(1),...,(L-1)]T,],,-,,-[θ)]-(,),1-()-(,),1-([)1-(11bannbabbaankukunkykyk设在k-1时刻和k时刻,系统的参数估计结果为11111Φ)ΦΦ()1-(θˆkkkkkYkkkkkYΦ)ΦΦ()(θˆ1其中和分别为根据前k次和前k-1次观测/采样数据得到的LS参数估计值.)(θˆk)1-(θˆk首先,假定在第k-1次递推中,我们已计算好参数估计值在第k次递推时,我们已获得新的观测数据向量(k-1)和y(k),则记Φk-1=[(0),(1),...,(k-2)]TYk-1=[y(1),y(2),...,y(k-1)]TΦk=[(0),(1),...,(k-1)]T=[φ(k-1)Tφ(k-1)]TYk=[y(1),y(2),...,y(k)]T=[y(k)]T1kY仔细考察上述LS法,可以知道,该算法进行递推化的关键是算法中的矩阵求逆的递推计算问题.因此,下面先讨论该逆矩阵的递推计算.)2()ΦΦ()(1-kkkP将Φk展开,故有1-1-1-))]1-(Φ)][1-(Φ([)(kkkkkP1-1-1-)]1-()1-(ΦΦ[kkkk)3()]1-()1-()1-([1-1-kkkP为便于逆矩阵递推算式的推导,下面引入如下矩阵反演公式(设A和C为可逆方阵)(A+BCD)-1=A-1-A-1B(C-1+DA-1B)-1DA-1(4)该公式可以证明如下:由于(A+BCD)[A-1-A-1B(C-1+DA-1B)-1DA-1]=I-B(C-1+DA-1B)-1DA-1+BCDA-1-BCDA-1B(C-1+DA-1B)-1DA-1=I-B[I-C(C-1+DA-1B)+CDA-1B](C-1+DA-1B)-1DA-1=I因此,矩阵反演公式(4)成立.下面讨论参数估计值的递推计算.由上一讲的一般LS估计式由式(3)和矩阵反演公式(4),可得P(k)的如下递推计算式1)-()1-()]1-(1)-()1-(1)[1-(1)-(-1)-()(1kkkkkkkkkPPPPPkkkkkkkkYPYΦ)(Φ)ΦΦ()(θˆ1-有)(Φ)(θˆ)(1-kkkkYP(5)1)-()1-(1)-()1-(1)1-()1-(1)-(-kkkkkkkPPPI该乘积为标量)3()]1-()1-()1-([)(1-1-kkkkPP)(θˆk(A+BCD)-1=A-1-A-1B(C-1+DA-1B)-1DA-1即)]()1-()][1-(Φ)[()(θˆ1kykkkkkYP)]()1-()1-(Φ)[(1kykkkkYP)]()1-()1-(θˆ)1-()[(1kykkkkPP)}()1-()1-(θˆ)]1-()1-(-)(){[(1kykkkkkkPP)6()]1-(θˆ)1-(-)()[1-()()1-(θˆkkkykkkP利用公式)(Φ)(θˆ)(1-kkkkYP利用公式P(k)=[P-1(k-1)+(k-1)T(k-1)]-1将式(5)和(6)整理可得如下RLS估计算法表示)8(1)-()1-(1)-()1-(1)1-()1-(1)-(-)()7()]1-(θˆ)1-(-)()[1-()()1-(θˆ)(θˆkkkkkkkkkkkykkkkPPPIPP其中的计算顺序为先计算P(k),然后再计算.)(θˆk)11()1-(1)-()1-(1)1-(1)-()()10(1)-()]1-()(-[)()9()]1-(θˆ)1-(-)()[()1-(θˆ)(θˆkkkkkkkkkkkkkykkkPPKPKIPK其中K(k)称为增益向量;令上述算法的计算顺序为先计算K(k-1),然后再分别计算和P(k-1).)(θˆk,)1-(θˆ)1-()(ˆkkky表示基于k-1时刻的历史数据对y(k)的预报值。有时,为计算方便并便于理解,上述RLS估计算法又可表示为综上所述,RLS法的基本计算步骤可总结如下:1.确定被辨识系统模型的结构,以及多项式A(z-1)和B(z-1)的阶次;2.设定递推参数初值,P(0);3.采样获取新的观测数据y(k)和u(k),并组成观测数据向量(k-1);4.用式(7)~(8)或(9)~(11)所示的RLS法计算当前参数递推估计值;5.采样次数k加1,然后转回到第3步骤继续循环.0)(ˆ)(ˆk下面关于该RLS算法,有关于其实现问题的如下讨论:递推初始值选取成批LS与RLS的比较信号充分丰富与系统充分激励数据饱和A.递推初始值选取在递推辨识中,如何选取递推计算中的和P(k)的初值是一个相当重要的问题.一般来说,有如下两种选取方法:(1)选取各元素为零或较小的参数,P(0)=I,其中为充分大的实数(105~1010);(2)先将大于所需辨识的参数个数的L组数据,利用成批型的LS法求取参数估计值LS和协方差阵P(L),并将这些量作为递推估计的初值.)(ˆk)0(ˆ递推最小二乘参数估计算法息信有原ˆNNP1ˆN1NP1Ny1N息信出输产生输入数据u和输出数据z结束开始初始化P(0)、θ(0)、w和ε计算P(k),θ(k)和K(k))1(ˆ)1(ˆ)(ˆmaxkkkiiiiLk)()1()()1(kPkPkk是是否否B.LS法和RLS法的比较LS法和RLS法的比较LS法是一次完成算法,适于离线辩识,要记忆全部测量数据,程序长;RLS法是递推算法,适于在线辩识和时变过程,需要记忆的数据少,程序简单;RLS法用粗糙初值时,如若N(即样本数少)较小时,估计精度不如LS法.C.信号充分丰富与系统充分激励对于所有学习系统与自适应系统,信号充分丰富(系统充分激励)是非常重要的.若系统没有充分激励,则学习系统与自适应系统就不能一致收敛.不一致收敛则意味着所建模型存在未建模动态或模型误差较大,这对模型的应用带来巨大隐患.如对自适应控制,未建模动态可能导致系统崩溃.为保证学习系统与自适应系统一致收敛,则所产生的系统的学习样本数据(系统输入输出信号)应具有尽可能多的模态,其频带要足够宽,而且其信号强度不能以指数律衰减.这样才能保证系统具有充分激励,所测取的信号数据是充分丰富的,相关性矩阵P(k)不为病态.D.数据饱和在辨识递推计算过程中,协方差矩阵P(k)随着递推的进程将衰减很快,此时算法的增益矩阵K(k)也急剧衰减,使得新数据失去对参数估计值的修正能力.这种现象称为数据饱和.因此需要考虑修正方案,以保持新数据对参数估计值的一定的修正能力,使得能得到更准确的参数估计值,或能适应对慢时变参数的辨识.式中,)(kV是服从正态分布的白噪声)1,0(N。输入信号采用4阶M序列,其幅值为1。例:采用递推最小二乘估计辨识模型参数)()2(5.0)1()2(7.0)1(5.1)(kVkukukzkzkz)()2()1()2()1()(2121kVkubkubkzakzakz选择如下的辨识模型进行递推最小二乘参数辨识。2.递推最小二乘法实例与仿真Matlab程序:%最小二乘的递推算法%Z(k+2)=1.5*Z(k+1)-0.7*Z(k)+u(k+1)+0.5*u(k)+v(k)%========================================clearclc%==========400个产生M序列作为输入===============x=[010110111];%initialvaluen=403;%n为脉冲数目M=[];%存放M序列fori=1:ntemp=xor(x(4),x(9));M(i)=x(9);forj=9:-1:2x(j)=x(j-1);endx(1)=temp;end%===========产生均值为0,方差为1的高斯白噪声=========v=randn(1,400);%==============产生观测序列z=================z=zeros(402,1);z(1)=-1;z(2)=0;fori=3:402z(i)=1.5*z(i-1)-0.7*z(i-2)+M(i-1)+0.5*M(i-2)+v(i-2);end%递推求解P=100*eye(4);%估计方差Pstore=zeros(4,401);Pstore(:,1)=[P(1,1),P(2,2),P(3,3),P(4,4)];Theta=zeros(4,401);%参数的估计值,存放中间过程估值Theta(:,1)=[3;3;3;3];%K=zeros(4,400);%增益矩阵K=[10;10;10;10];fori=3:402h=[-z(i-1);-z(i-2);M(i-1);M(i-2)];K=P*h*inv(h'*P*h+1);Theta(:,i-1)=Theta(:,i-2)+K*(z(i)-h'*Theta(:,i-2));P=(eye(4)-K*h')*P;Pstore(:,i-1)=[P(1,1),P(2,2),P(3,3),P(4,4)];endi=1:401;figure(1)plot(i,Theta(1,:),i,Theta(2,:),i,Theta(3,:),i,Theta(4,:))title('待估参数过渡过程')figure(2)plot(i,Pstore(1,:),i,Pstore(2,:),i,Pstore(3,:),i,Pstore(4,:))title('估计方差变化过程')经过编程计算,各个参数的估计值为3341.00284.168
本文标题:递推最小二乘辨识
链接地址:https://www.777doc.com/doc-3224599 .html