diff --git a/matlab/DiffuseLikelihood1.m b/matlab/DiffuseLikelihood1.m index 8be81e596bd912e9e713ea2377bc5f8e5460141b..5149bbc4a24c0e4f708308ae877fa8f36af8d4a1 100644 --- a/matlab/DiffuseLikelihood1.m +++ b/matlab/DiffuseLikelihood1.m @@ -10,7 +10,7 @@ function [LIK, lik] = DiffuseLikelihood1(T,R,Q,Pinf,Pstar,Y,trend,start) mm = size(T,2); pp = size(Y,1); a = zeros(mm,1); - dF = 1; + dF = 1; QQ = R*Q*transpose(R); t = 0; lik = zeros(smpl+1,1); @@ -33,12 +33,12 @@ function [LIK, lik] = DiffuseLikelihood1(T,R,Q,Pinf,Pstar,Y,trend,start) lik(t) = log(dFstar) + transpose(v)*iFstar*v; Pinf = T*Pinf*transpose(T); Pstar = T*(Pstar-Pstar(:,mf)*transpose(Kstar))*transpose(T)+QQ; - a = T*(a+Kstar*v); + a = T*(a+Kstar*v); end else lik(t) = log(det(Finf)); iFinf = inv(Finf); - Kinf = Pinf(:,mf)*iFinf; %% premultiplication by the transition matrix T is removed (stephane) + Kinf = Pinf(:,mf)*iFinf; %% premultiplication by the transition matrix T is removed (stephane) Fstar = Pstar(mf,mf); Kstar = (Pstar(:,mf)-Kinf*Fstar)*iFinf; %% premultiplication by the transition matrix T is removed (stephane) Pstar = T*(Pstar-Pstar(:,mf)*transpose(Kinf)-Pinf(:,mf)*transpose(Kstar))*transpose(T)+QQ; diff --git a/matlab/check.m b/matlab/check.m index ac2b52cc9f6d05ca6bccb5c0d12333702d779df1..9c4daf8bac3d71a0dd51bfdafeedab674750b11d 100644 --- a/matlab/check.m +++ b/matlab/check.m @@ -15,6 +15,10 @@ global it_ options_ = set_default_option(options_,'order',1); options_ = set_default_option(options_,'linear',0); options_ = set_default_option(options_,'dr_algo',0); + options_ = set_default_option(options_,'steadystate_flag',0); + if exist([M_.fname '_steadystate.m']) + options_.steadystate_flag = 1; + end [dr, info] = resol(oo_.steady_state,1); diff --git a/matlab/dynare.m b/matlab/dynare.m index b668a700d90789d3f2eb068c6a9476ff84d0ac96..b5d3fde9c6d211d379d6e10727d26b84e5679df2 100644 --- a/matlab/dynare.m +++ b/matlab/dynare.m @@ -10,7 +10,7 @@ function dynare(fname, varargin) % is processed. if ~isstr(fname) - error ('The argument in DYNARE must be a text string.') ; + error ('The argument in DYNARE must be a text string.') ; end % Testing if file have extension % If no extension defalut .mod is added diff --git a/matlab/dynare_MC.m b/matlab/dynare_MC.m index 51bddb50e263355830cd013c53aa16ef056b8420..73edfd1fa2a2891e97cbde36f2e09631a54bb8d4 100644 --- a/matlab/dynare_MC.m +++ b/matlab/dynare_MC.m @@ -57,6 +57,10 @@ options_ = set_default_option(options_,'posterior_mode_estimation',1); options_ = set_default_option(options_,'MaxNumberOfBytes',1e6); options_ = set_default_option(options_,'xls_sheet',''); options_ = set_default_option(options_,'xls_range',''); +options_ = set_default_option(options_,'steadystate_flag',0); +if exist([M_.fname '_steadystate.m']) + options_.steadystate_flag = 1; +end %% Add something to the parser ++> M_.dname = M_.fname; % The user should be able to choose another name @@ -109,13 +113,6 @@ ncn = estim_params_.ncn; np = estim_params_.np ; nx = nvx+nvn+ncx+ncn+np; -%% Static solver -if exist([M_.fname '_steadystate']) - bayestopt_.static_solve = [M_.fname '_steadystate']; -else - bayestopt_.static_solve = 'dynare_solve'; -end - dr = set_state_space([]); %% Initialization with unit-root variables diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m index 7724ea1e15ec08aa753783962e8a16661511df50..f2052bf63ebf35e7c3e9f7549866fa6223b94807 100644 --- a/matlab/dynare_estimation.m +++ b/matlab/dynare_estimation.m @@ -64,6 +64,10 @@ options_ = set_default_option(options_,'filter_step_ahead',0); options_ = set_default_option(options_,'diffuse_d',[]); options_ = set_default_option(options_,'Opt6Iter',3); options_ = set_default_option(options_,'Opt6Numb',100000); +options_ = set_default_option(options_,'steadystate_flag',0); +if exist([M_.fname '_steadystate.m']) + options_.steadystate_flag = 1; +end if options_.filtered_vars ~= 0 & options_.filter_step_ahead == 0 options_.filter_step_ahead = 1; @@ -131,14 +135,6 @@ ncn = estim_params_.ncn; np = estim_params_.np ; nx = nvx+nvn+ncx+ncn+np; -%% Static solver -if exist([M_.fname '_steadystate']) - bayestopt_.static_solve = [M_.fname '_steadystate']; - eval(['[ys,check] = ' bayestopt_.static_solve '([],[]);']) -else - bayestopt_.static_solve = 'dynare_solve'; -end - dr = set_state_space([]); %% Initialization with unit-root variables @@ -243,8 +239,8 @@ if length(options_.mode_file) > 0 & options_.posterior_mode_estimation end % Compute the steadyn state if the _steadystate.m file is provided -if strcmpi(bayestopt_.static_solve,[M_.fname '_steadystate']) - [oo_.steady_state,tchek] = feval(bayestopt_.static_solve,[],[]); +if options_.steadystate_flag + [oo_.steady_state,tchek] = feval([M_.fname '_steadystate'],[],[]); end initial_estimation_checks(xparam1,gend,data); diff --git a/matlab/resol.m b/matlab/resol.m index b598d73916776313cd20526675d1d94a76cf6840..1c07bdeb162c040696ac75e3193b4b7710013525 100644 --- a/matlab/resol.m +++ b/matlab/resol.m @@ -33,8 +33,8 @@ dr.ys = ys; fh = str2func([M_.fname '_static']); if options_.linear == 0 if max(abs(feval(fh,dr.ys,[oo_.exo_steady_state; oo_.exo_det_steady_state]))) > options_.dynatol & options_.olr == 0 - if strcmpi(bayestopt_.static_solve,[M_.fname '_steadystate']) - [dr.ys,check1] = feval(bayestopt_.static_solve,dr.ys,... + if options_.steadystate_flag + [dr.ys,check1] = feval([M_.fname '_steadystate'],dr.ys,... [oo_.exo_steady_state; oo_.exo_det_steady_state]); else [dr.ys,check1] = dynare_solve(fh,dr.ys,options_.jacobian_flag,... diff --git a/matlab/steady.m b/matlab/steady.m index 5bb063f9c8367694c24a1c08fe375867ce24e680..82ef8c4eafc4269b3873697c04ed656b8333483e 100644 --- a/matlab/steady.m +++ b/matlab/steady.m @@ -5,7 +5,11 @@ function steady(linear) global M_ oo_ options_ ys0_ options_ = set_default_option(options_,'jacobian_flag',1); - + options_ = set_default_option(options_,'steadystate_flag',0); + if exist([M_.fname 'steadystate.m']) + options_.steadystate_flag = 1; + end + steady_; disp(' ') diff --git a/matlab/steady_.m b/matlab/steady_.m index 3b5326226243ed7a41b64dfbb83339a8c4481b3f..b2ab1ee8c11936cf0b524c1e1d39e15783c3221c 100644 --- a/matlab/steady_.m +++ b/matlab/steady_.m @@ -4,7 +4,7 @@ function steady_() global M_ oo_ it_ options_ - if exist([M_.fname '_steadystate']) + if options_.steadystate_flag [oo_.steady_state,check] = feval([M_.fname '_steadystate'],... oo_.steady_state,... [oo_.exo_steady_state; ...