Global Index (short | long) | Local contents | Local Index (short | long)
eta=thinit(eta0,R,par,sp);
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]
This function calls | This function is called by |
---|---|
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