《最小方差自校正控制Matlab程序.docx》由会员分享,可在线阅读,更多相关《最小方差自校正控制Matlab程序.docx(7页珍藏版)》请在优知文库上搜索。
1、最小方差自校正控制Mat1.ab程序最小方差自校正控制Mat1.ab程序1.自校正控制自适应控制有很多种,例如模型参考自适应控制系统、自校正控制系统等。自校正控制(STC)最早是由R.E.Ka1.man在1958年提出的,他设计了基于最小二乘估计和有限拍控制的自适应控制器,并为了实现这个控制器,还建造了一台专用模拟计算机,但其发展受到了当时的硬件问题的闲扰。4*w1HnwI图1间接自校正控制系统图2直接自校正控制系统自校正控制系统也有内环和外环。内环与常规反馈系统类似,外环由对象参数递推估计器和控制器计算机构组成,其任务是由递推估计器在线估计被控对象参数,用以代替对象的未知参数,然后由设计机构
2、按一定的规则对可调控制器的参数进行在线求解,用以修改内环的控制器。自校正控制器是在线参数估计和控制参数在线设计两者的有机结合。另外,在参数估计时,对观测数据的使用方式有两种。一种是不直接更新控制器参数,而是先估计被控对象模型本身的未知参数,然后再通过设计机构得到控制器参数,如图1所示,称为间接算法,另一种是直接估计控制器参数,这时需要将过程重新参数化,建立一个与控制器参数直接关联的估计模型,称为直接算法,如图2。2.最小方差自校正Mat1.ab算法仿真(直接自校正和间接自校正)设被调对象为CARMA模型1.1.1.()()()()()()dAzytzBzutCzt=+其中,1121111()1
3、1.70.7()10.5()10.2AZzzBqzCzz=+=式中,()k为方差为1的白噪声。(一)取初值6?(O)Io(O)OP16=、,0f的下界为min0.1f二,期望输出()ryk为幅值为10的方波信号,采用最小方差直接自校正控制算法,观察不同时滞d=1.4、8时,最小方差自校正算法的控制效果。QBB(a)时滞为1(b)时滞为4(C)时滞为8图4-2最小方差直接自校正算法仿真结果(二)取初值6?(O)Io(O)0.001PI。期望输出Oryk为幅值为10的方波信号,用增广递推最小二乘法进行参数估计,采用最小方差间接自校正控制算法,仿真效果如图4-3,d=4。图4-3最小方差间接自校正算
4、法仿真效果(d=4)Mat1.ab程序:%程序:最小方差直接自校正控制(MVC)算法c1.eara1.1.;c1.osea1.1.;a=1.-1.70.7;b=1.0.5;c=1.0.2;d=4;%对象参数na=1.ength(a)-1.;nb=1.ength(b)-1.;nc=1.ength(c)-1.;%na、nb、nc为多项式A、B、C阶次nf=nb+d-1.%nf为多项式F的阶次1.=400;%控制步数uk=zeros(d+nb,1.);%输入初值:uk(i)表示u(k-i);yk=zeros(na1.1.);%输出初值yrk=zeros(ncz1.);%期望输出初值xik=zeros
5、(ncz1.);%白噪声初值yr=10*ones(1.4,1.)rones(1.4,1.)jones(1.4,1.)rones(1.4+d,1.);%期望输出xi=sqrt(O.1.)*randn(1.z1.);%白噪声序列e,f,g=SindiOPhantine(a,b,c,d);%求解单步DioPhantine方程fork=1.:1.time(k)=k;y(k)=-a(2:na+1.)*yk+b*uk(d:d+nb)+c*xi(k);xik;%采集输出数据u(k)=(-f(2:nf+1.)*uk(1.:nf)+c*yr(k+d:-1.:k+d-min(d,nc);yrk(1.:nc-d)-
6、g*y(k);yk(1.:na-1.)/f;求控制量%更新数据fori=d+nb:-1.:2uk(i)=uk(i-1.);enduk(1.)=u(k);fori=na:-1.:2yk(i)=yk(i-1.);endyk=y(k);fori=nc:-1.:2yrk(i)=yrk(i-1.);xik(i)=xik(i-1.);endifnc0yrk(1.)=yr(k);xik(1.)=xi(k);endendsubp1.ot(2,1.z1.);p1.ot(timezyr(1.1),ztimezy);1.abe1.(k);y1.abe1.(,y-r(k)xy(k),);1.egendCy_r(k)7
7、y(k);subp1.ot(2z1.z2);p1.ot(timezu);x1.abe1.(,k,);y1.abe1.(,u(k),);%程序:最小方差间接自校正控制c1.eara1.1.;c1.osea1.1.;a=1.-1.70.7;b=1.0.5;c=1.0.2;d=4;%对象参数na=1.ength(a)-1.;nb=1.ength(b)-1.;nc=1.ength(c)-1.;%naxnb、nc为多项式A、B、C阶次nf=nbd-1.;%nf为多项式F的阶次1.=400;%控制步数uk=zeros(d+nbz1.);%输入初值:Uk(i)表示u(k-i);yk=zeros(na,1.)
8、;%输出初值yrk=zeros(ncz1.);%期望输出初值ik=zeros(ncz1.);%白噪声初值xiek=zeros(ncz1.);%白噪声估计初值yr=10*ones(1.4,1.)rones(1.4,1.)jones(1.4,1.)rones(1.4+d,1.);%期望输出xi=sqrt(0.1)*randn(1.,1.);%白噪声序列%RE1.S初值设置thetae-1.=0001*ns(na+nb+1.+ncz1.);%非常小的正数(这里不能为0)P=10A6*eye(na+nb+1.+nc);fork=1.:1.time(k)=k;y(k)=-a(2:na+1.)*yk+b*
9、uk(d:d+nb)+c*xi(k);xik;%采集输出数据%递推增广最小二乘法phie=-yk;uk(d:d+nb);xiek;K=P*phie(1.+phie,*P*phie);thetaeC,k)=thetae-1.+K*(y(k)-phie*thetae-1.);P=(eye(na+nb+1.+nc)-K*phie,)*P;xie=y(k)-phie*thetae(:,k);%白噪声的估计值%提取辨识参数ae=1.thetae(1.azk);be=thetae(na+1.:na+nb+1.zk);ce=1.thetae(na+nb+2:na+nb+1.+nczk),;ifabs(be)
10、0.9be(2)=sign(ce(2)*0.9;%MVC算法要求B稳定endifabs(ce(2)0.9ce(2)=sign(ce(2)*0.9;ende,fg=SindiOPhantine(ae,be,ce,d);%求解单步Diophantine方程u(k)=(-f(2:nf+1.)*uk(1.:nf)+ce*yr(k+d:-1.:k+d-min(drnc);yrk(1.:nc-d)-g*y(k);yk(1.:na-1.)/f(1.);%求控制量%更新数据thetae_1.=thetae(:zk);fori=d+nb:-1.:2uk(i)=uk(i-1.);enduk(1.)=u(k);fo
11、ri=na:-1.:2yk(i)=yk(i-1.);endyk=y(k);fori=nc:-1.:2yrk(i)=yrk(i-1.);xik(i)=xik(i-1.);xiek(i)=xiek(i-1.);endifncOyrk(1.)=yr(k);xik(1.)=xi(k);xiek(1.)=xie;endendfigure(1.);subp1.ot(2,1.z1.);P1.ot(time,yr(1.:1.);r:,time,y);x1.abe1.(k);y1.abe1.(y_r(k)、y(k),);1.egend(y-r(k),y(k);axis(01.-2020);subp1.ot(2z1.z2);p1.ot(timezu);x1.abe1.(,k);y1.abe1.(u(k);axis(O1.-4040);figure(2)subp1.ot(211)p1.ot(1.,thetae(1.na,:);abe1.(k);y1.abe1.(参数估计a);1.egend(,a.1.a-2);axis(01.-32);subp1.ot(212)p1.ot(1.:1.zthetae(na+1.:na+nb+1.+ncr:);x1.abe1.(,k,);y1.abe1.(参数估计b、c,);Iegend(b.7b-ic-1.,);axis(01.01.5);