Documentation of thinit


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


Function Synopsis

eta=thinit(eta0,R,par,sp);

Help text

THINIT Initial parameter values for iterative estimation.
   TH = THINIT(TH0) or TH = THINIT(TH0,R,PAR,SP)

   TH0:Original theta corresponding to state-space model (See also THSS)
   TH: Modified TH0 with new initial parameter values
   R: variance of random initial parameters
      (row vector with dim = dimension of parameter vector)
   PAR: mean of initial parameters (PAR =[] gives default)
   AP: SP='p' :stability of predictor assured
       SP='s' :stability of system is assured
       SP='b' :both predictor and system will be stable

   Defaults: SP='p', PAR=the parameter values of TH0, R=[1 ... 1]

Cross-Reference Information

This function calls This function is called by

Listing of function thinit

function eta=thinit(eta0,R,par,sp);

%   L. Ljung 10-2-1990,9-26-1993
%   Copyright (c) 1986-98 by The MathWorks, Inc.
%   $Revision: 2.3 $  $Date: 1997/12/02 03:44:43 $

if nargin < 1
   disp('Usage: THI = THINIT(TH)')
   disp('       THI = THINIT(TH,VARIATION,NOMINAL_GUESS,STABILITY)')
   disp('       STABILITY is one of ''p'', ''s'', ''b''.')
   return
end
if ~isthss(eta0),error('This routine is for state-space model structures only!'),end
[nr,nc]=size(eta0);
sspm=getmfth(eta0);
T=eta0(1,2); Tmod=abs(T);
nd=eta0(1,5);
ms=getargth(eta0);
if nargin<2;R=[];end
if nargin<3;par=[];end
if nargin<4;sp=[];end

if isempty(R),R=ones(nd,1);end,if isempty(sp),sp='p';end
if isempty(par),par=eta0(3,1:nd);end

if length(R)~=nd,error('The length of the vector R must equal the number of free parameters in th!'),end
if length(par)~=nd,error('The length of the parameter vector must equal the number of free parameters in th!'),end
test=2;nr=1;if norm(R)==0,noR=1;else noR=0;end
while test>1 & nr<50
        parval=randn(1,nd)*diag(sqrt(R))+par;
        if any(eta0(2,8)==[2 3]),Tmod=-1;end
        [a,b,c,d,k]=feval(sspm,parval,Tmod,ms);

        if sp=='s',test=max(abs(eig(a)));
        elseif sp=='p',test=max(abs(eig(a-k*c)));
        else test=max([max(abs(eig(a))), max(abs(eig(a-k*c)))]);
        end
nr=nr+1; if nr==50,error('50 samples drawn without satisfying the stability conditions'),end
if noR,nr=50;if test>1,disp('WARNING: System/predictor unstable'),end,end
end
eta=eta0;
eta(3,1:nd)=parval;
eta(2,7)=27;
if eta(2,8)==3,eta(2,7)=37;end