www.gusucode.com > 预览控件工具箱 > 预览控件工具箱/预览控件工具箱/PCT/@PrevTrackSys/private/MkPrevTrackSys.m
function P=MkPrevTrackSys(psys) % Private method used to generate the augmented state space representation % of a preview tracking system [n,p,q,lw,m]=Getsz(psys.G); lr=psys.lr; N=psys.N; l=lw+lr; [As,B1s,B2s,C1s,C2s,D11s,D12,D21s,D22s,Ts]=GetSS(psys.G); nps=N*lr; Ap=[zeros(nps-lr,lr) eye(nps-lr,nps-lr);zeros(lr,nps)]; Bp=[zeros(nps-lr,lr);eye(lr)]; C1=[C1s [ -eye(lr);zeros(p-lr,lr)] zeros(p,nps-lr)]; C2=[C2s zeros(q,nps);zeros(lr,n+nps)]; D21=[D21s zeros(q,lr);zeros(lr,lw) eye(lr)]; D11=[D11s zeros(p,lr)]; D22=[D22s; zeros(lr,m)]; B=[B1s zeros(n,lr) B2s;zeros(nps,lw) Bp zeros(nps,m)]; A=[As zeros(n,nps);zeros(nps,n) Ap]; C=[C1;C2]; D=[D11 D12; D21 D22]; Wwru=ss(eye(l+m)); Wwru(1:lw,1:lw)=psys.Ww; Wwru(lw+1:l,lw+1:l)=psys.Wr; Wyz=ss(eye(p+q+lr)); Wyz(1:p,1:p)=psys.Wz; if strcmp(computer, 'PCWIN') P=GenSys(Wyz*ss(A,B,C,D,psys.G.Ts)*Wwru,q+lr,m); else P=GenSys(Wyz*ss(A,B,C,D,psys.G.Ts)*Wwru,q+lr,m); end