資源簡介
基與廣義預(yù)測控制算法進(jìn)行MATLAB仿真,在線辨識模型參數(shù)
代碼片段和文件信息
%ex9_1/9_2.m
clear;disp(‘單變量最小相位系統(tǒng)的隱式廣義預(yù)測控制算法的研究‘)
d0=input(‘仿真例9-1請輸入1;仿真例9-2請輸入2:‘);
disp(‘廣義預(yù)測控制算法初始值‘)
nn=input(‘時域長度p=‘);n=input(‘預(yù)測長度n=‘);m=input(‘控制長度m=‘);
t0=input(‘控制加權(quán)系數(shù)λ=‘);a=input(‘柔化系數(shù)α=‘);
disp(‘最小二乘公式初始值‘)
t1=1;?????????????????????????
d1=0;d2=0;d3=0;
d1=input(‘(n+1)階方陣P的形式:設(shè)置為方陣請輸入1;否則按回車鍵將自動設(shè)置為對角陣:‘);
d2=input(‘(n+1)階方陣P的初始值:鍵盤設(shè)置請輸入1;否則按回車鍵自動賦值為1e+5:‘);
if?(d1==1)
????if?(d2==1)
????????P=input(‘在方括號[?]中輸入(n+1)階方陣P的值:‘);
????else
????????P=(1e+5)*ones(n+1);
????end
else
????if?(d2==1)
????????PP=input(‘在方括號[?]中輸入(n+1)階對角方陣P對角線上的值:‘);
????????P=diag(PP);
????else
????????P=(1e+5)*eye(n+1);
????end
end
uuu=0;yyy=0;uu=zeros(n1);u=zeros(m1);yy=zeros(n1);y1=zeros(n1);
Q=zeros(n+11);Q(11)=1;Q(n+11)=1;
T=300;[yr0t]=gensig(‘square‘100T1);
d3=input(‘輸出曲線是否去掉前100步:去掉時請輸入1;否則按回車鍵:‘);
nm=length(t);???????????????????
for?ij=2:nm
????yr=yr0(ij)+1;???
????if?(d0==1)
??????y=1.496585*yy(n1)-0.496585*yy(n-11)+0.5*uu(n-11);???????????????
????else
??????y=2.001676*yy(n1)-1.24339*yy(n-11)+0.24171*yy(n-21)+0.23589*uu(n1);?
????end
????a9=0;
????for?i=1:1
????????a9=a9+rand;
????end
????a8=0.01*(a9-6);?????????
????for?i=1:n-1
????????yy(i1)=yy(i+11);
????end
????yy(n1)=y;
????yyy=[yyy;y];?????????????????????
????for
評論
共有 條評論