www.gusucode.com > 预览控件工具箱 > 预览控件工具箱/预览控件工具箱/PCT/@PrevDistRejSys/private/MkPrevDistRejSys.m
function [P,psys]=MkPrevDistRejSys(psys) % Private method used to of generate the augmented state space representation % of a preview system [ng,p,q,l,m]=Getsz(psys.G); lr=psys.G.lr; lw=psys.G.lw; N=psys.N; % absorb Wz and Ww into G to give GW Wwru=ss(eye(l+m)); Wwru(lr+1:l,1+lr:l)=psys.Ww; Wyz=ss(eye(p+q)); Wyz(1:p,1:p)=psys.Wz; GW=DistRejGSys(Wyz*psys.G*Wwru,q,m,lr); psys.GW=GW; [Ag,B1g,B2g,C1g,C2g,D11g,D12,D21g,D22g,Ts]=GetSS(GW); [B1gr,B1gw,D11gr,D11gw,D21gr,D21gw]=GetSSrw(GW); ng=size(Ag,1); % redefine ng nps=N*lr; Ap=[zeros(nps-lr,lr) eye(nps-lr,nps-lr);zeros(lr,nps)]; Bp=[zeros(nps-lr,lr);eye(lr)]; Cp=[eye(lr) zeros(lr,nps-lr)]; C1=[C1g D11gr*Cp ]; C2=[C2g D21gr*Cp;zeros(lr,ng+nps)]; D21=[ zeros(q,lr) D21gw; eye(lr) zeros(lr,lw) ]; D11=[ zeros(p,lr) D11gw]; D22=[D22g; zeros(lr,m)]; B=[zeros(ng,lr) B1gw B2g;Bp zeros(nps,m+lw)]; A=[Ag B1gr*Cp;zeros(nps,ng) Ap]; C=[C1;C2]; D=[D11 D12; D21 D22]; Wwru=ss(eye(l+m)); Wwru(1:lr,1:lr)=psys.Wr; P=DistRejGSys(ss(A,B,C,D,psys.G.Ts)*Wwru,q+lr,m,lr);