⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yanga.m

📁 基于单变量的广义自适应预测控制程序
💻 M
字号:
clear all;
close all;
nn=input('p=');
n=input('n=');
m=input('m=');
t0=input('t=');
a=input('a=');
t1=1;                     
P=(1e+5)*eye(n+1);
 
uuu=0;yyy=0;
uu=zeros(n,1);u=zeros(m,1);
yy=zeros(n,1);y1=zeros(n,1);
Q=zeros(n+1,1);Q(1,1)=1;Q(n+1,1)=1;

T=300; [yr0,t]=gensig('square',100,T,1);
nm=length(t);                   
for ij=2:nm
    yr=yr0(ij)+1;                     

    y=1.496585*yy(n,1)-0.496585*yy(n-1,1)+0.5*uu(n-1,1);     

    a9=0;
    for i=1:1
       a9=a9+rand;
    end

    a8=0.01*(a9-6);

    for i=1:n-1
        yy(i,1)=yy(i+1,1);
    end
    yy(n,1)=y;
    yyy=[yyy;y];                   

    for i=1:n
        X(1,i)=uu(i,1);
    end
    X(1,n+1)=1;
    K=P*X'*inv(t1+X*P*X');
    P=(eye(n+1)-K*X)*P/t1;
    Q=Q+K*(y-X*Q);

    for j=1:m
        for i=n:-1:j
            i1=n-i+j;
            G(i1,j)=Q(i,1);
        end
    end

    y0(1:nn-1,1)=y1(2:nn,1);y0(nn,1)=y1(nn,1);
    y0=y0+(y-y1(1,1));

    for i=1:n
        y1(i,1)=y0(i,1)+u(1,1)*Q(n+1-i,1);
    end
    for i=n+1:nn
        y1(i,1)=y1(n,1);
    end

    f(1:n,1)=y0(1:n,1);

    w=a*y+(1-a)*yr;
    for i=2:n
        w=[w;a^i*y+(1-a^i)*yr];
    end

    u=inv(G'*G+t0*eye(m))*G'*(w-f);                          

    for i=1:n-1
        uu(i,1)=uu(i+1,1);
    end
    uu(n,1)=u(1,1);
    uuu=[uuu;u(1,1)];                  

    if(u(1,1)>1)
       u(1,1)=1;
    end
    if(u(1,1)<-1)
       u(1,1)=-1;
    end
end

subplot(2,1,1):plot(t,(yr0+1),t,yyy);
axis([0,nm,0,2.5]); xlabel('t'); ylabel('yr,y') 
subplot(2,1,2):plot(t,uuu);
axis([0,nm,-1.5,1.5]); xlabel('t'); ylabel('u')

    
    








    


  














⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -