www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@des_linearmod/adelete.m
function [smod,psi]=adelete(smod,initpsi,p,DO_DESIGNTYPE) %DES_LINEARMOD/ADELETE A-optimal deletion % [D,PSI]=ADELETE(D,INITPSI,P) deletes P lines from the design D % using a-optimality. A new design object and the new % a-opimality criteria, PSI, are returned. % Copyright 2000-2004 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin<4 DO_DESIGNTYPE=1; end if DO_DESIGNTYPE [TP,INFO]=DesignType(smod); end % Initial Ai must be for all points. It is then iteratively % updated and hence is always correctly derived from all points. X=CalcJacob(model(smod),factorsettings(smod)); [Q,R]= qr(X,0); ri= R\eye(size(R)); Ai=ri*ri'; % X used for deletion point search is taken from the non-fixed % points in the design X=X(freepoints(smod),:); psinew= initpsi; for m=1:p % quick way B= X*Ai; div=(1-sum(B.*X,2)); Bi=sum( B.*B,2 ); div=max(div,Bi*eps*2); [delpsi,i]=min( Bi./div); psinew=psinew+delpsi; if p>1 % Update Ai Ai= mx_r1update(Ai,B(i,:)/sqrt(div(i)),0); X(i,:)=[]; end smod=delete(smod,'indexed',i,'changeable'); end if DO_DESIGNTYPE % update design type smod=DesignType(smod,TP,INFO); % reset object to initial setting smod=UpdateDesignType(smod,'a'); % update type setting end psi=psinew; return