Documentation of sess


Global Index (short | long) | Local contents | Local Index (short | long)


Function Synopsis

[Vn,TH,st,elambda]=sess(V,z,th,sspm,T,modarg,sqrlam,g,lim,M,display)

Help text

SEARCH   Searches for a lower value of the criterion function

    [Vn,TH,ST,ELAMBDA] = sess(V,Z,TH,SSPM,T,MODARG,SQRLAM,..
                         G,LIM,M,DISPLAY)

    Vn: New value of the criterion
    TH : New parameter giving a lower value of the criterion
    ST=1 : No lower value of the criterion could be found.
    ELAMBA: Estimated value of the covariance matrix

    The routine evaluates the prediction error criterion at values
    along the G-direction, starting at TH. It is primarily intended
    as a subroutine to PEMSS. See PEMSS for an explanation of the
    arguments.

Cross-Reference Information

This function is called by

Listing of function sess

function [Vn,TH,st,elambda]=sess(V,z,th,sspm,T,modarg,sqrlam,g,lim,M,display)

%    L. Ljung 10-1-88,9-25-93
%   Copyright (c) 1986-98 by The MathWorks, Inc.
%   $Revision: 2.6 $  $Date: 1998/05/22 01:18:24 $

% *** Set up the model orders ***

th1=th;
[Ncap,nz]=size(z);
l=0;,k=1;,V1=V+1;st=0;

% *** Looping, attempting to find a lower value of V along
%     the G-direction ***

while [V1 > V l<10],
   th=th1+k*g.';
   [A,B,C,D,K,X0]=feval(sspm,th,T,modarg);[ny,nx]=size(C);
  if ~any(any(isnan(A)))
 
    ei=eig(A-K*C);
     if max(abs(ei))<=1
      for kc=1:M:Ncap
          jj=(kc:min(Ncap,kc-1+M));
          if jj(length(jj))<Ncap,jjz=[jj,jj(length(jj))+1];else jjz=jj;end
          xh=ltitr(A-K*C,[K B-K*D],z(jjz,:),X0);
          yh(jj,:)=(C*xh(1:length(jj),:).'+[zeros(ny,ny) D]*z(jj,:).').';
          [nxhr,nxhc]=size(xh);X0=xh(nxhr,:).';
      end
     e=z(:,1:ny)-yh;
     ll=ones(Ncap,1)*lim;
      if lim==0,el=e;else la=abs(e)+eps*ll;el=e.*sqrt(min(la,ll)./la);end
     V1=real(det(el'*el/length(e)));
   end
   end
   if display  % Give information to the screen
      %home
      disp(int2str(l))
   end 
   k=k/2; if l==8,k=0;end
   l=l+1; if l==10, st=1;end
end

TH=th;,Vn=V1;
elambda=el'*el/length(e);