www.gusucode.com > 预览控件工具箱 > 预览控件工具箱/预览控件工具箱/PCT/@PrevDistRejSys/private/Reduce.m
function [Ahkp1,Bhgkp1,Qhkp1,Rgkp1,Lhgkp1,Hhk,T1b,rep]=Reduce(P,Ahk,Bhgk,Qhk,Rgk,Lhgk,ng,lr,nwr) rep=0; U=null([Ahk Bhgk;Lhgk' Rgk]); try U=U(:,1:lr); % just use lr cols of null space catch error('PrevTools:nullspacecompfailed','Failed to compute null space during reduction algorithm') end [u,s,v]=svd(U(1:ng+lr,:),0); P=v*inv(s);% orthogonalising matrix T2b=u; T1b=null(T2b'); Tb=[T1b T2b]; T1h=[T1b zeros(ng+lr,lr)]; T2h=[T2b zeros(ng+lr,lr)]; Vb=Qhk*T2b+Lhgk*U(1+ng+lr:end,:)*P; Hhk=T2b*Vb'*T1b*T1b'+Vb*T2b'; Abk=[Ahk*T1b [zeros(ng,lr);eye(lr)]]; Qhkp1=T1h'*Qhk*T1h+Abk'*Hhk*Abk; Rgkp1=Rgk+Bhgk'*Hhk*Bhgk; Lhgkp1=T1h'*Lhgk+Abk'*Hhk*Bhgk; Ahkp1=T1h'*Abk; Bhgkp1=T1h'*Bhgk;