From 6947c977d48aae85f6cfa437608e6a2bc889a60c Mon Sep 17 00:00:00 2001 From: Marco Ratto <marco.ratto@ec.europa.eu> Date: Thu, 6 Jan 2022 15:01:35 +0100 Subject: [PATCH] bug fixes with occbin smoother: reset nested waitbars and fix names of outut structure of solver (cherry picked from commit 06a7e6c7bebc0ed8b9bb5c03058d534a45730d7b) --- matlab/DsgeSmoother.m | 9 +++++++-- matlab/missing_DiffuseKalmanSmootherH3_Z.m | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/matlab/DsgeSmoother.m b/matlab/DsgeSmoother.m index e6942561c3..722b80959d 100644 --- a/matlab/DsgeSmoother.m +++ b/matlab/DsgeSmoother.m @@ -423,13 +423,14 @@ else tmp(oo_.dr.restrict_var_list,1)=aahat(:,k-1); opts_simul.endo_init = tmp(oo_.dr.inv_order_var,1); opts_simul.init_regime = []; %regimes_(k); + opts_simul.waitbar=0; options_.occbin.simul=opts_simul; [~, out] = occbin.solver(M_,oo_,options_); % regime in out should be identical to regimes_(k-2) moved one % period ahead (so if regimestart was [1 5] it should be [1 4] % in out % end - bbb(oo_.dr.inv_order_var,k) = out.zpiece(1,:); + bbb(oo_.dr.inv_order_var,k) = out.piecewise(1,:); end end % do not overwrite accurate computations using reduced st. space @@ -466,6 +467,7 @@ else tmp(oo_.dr.restrict_var_list,1)=ahat0(:,k-1); opts_simul.endo_init = tmp(oo_.dr.inv_order_var,1); opts_simul.init_regime = []; %regimes_(k); + opts_simul.waitbar=0; options_.occbin.simul=opts_simul; [~, out] = occbin.solver(M_,oo_,options_); % regime in out should be identical to regimes_(k-2) moved one @@ -473,7 +475,7 @@ else % in out % end for jnk=1:options_.nk - aaa(jnk,oo_.dr.inv_order_var,k+jnk-1) = out.zpiece(jnk,:); + aaa(jnk,oo_.dr.inv_order_var,k+jnk-1) = out.piecewise(jnk,:); end end aK=aaa; @@ -525,6 +527,9 @@ else end ahat1=aaa; % reconstruct aK + if isempty(options_.nk) + options_.nk=1; + end aaa = zeros(options_.nk,M_.endo_nbr,gend+options_.nk); aaa(:,oo_.dr.restrict_var_list,:)=aK; for k=1:gend diff --git a/matlab/missing_DiffuseKalmanSmootherH3_Z.m b/matlab/missing_DiffuseKalmanSmootherH3_Z.m index 3f9850297a..a4d8e7e971 100644 --- a/matlab/missing_DiffuseKalmanSmootherH3_Z.m +++ b/matlab/missing_DiffuseKalmanSmootherH3_Z.m @@ -444,6 +444,7 @@ while notsteady && t<smpl opts_simul.endo_init = a(oo_.dr.inv_order_var,t); end opts_simul.init_regime = []; %regimes_(t); + opts_simul.waitbar=0; options_.occbin.simul=opts_simul; [~, out, ss] = occbin.solver(M_,oo_,options_); end @@ -456,9 +457,9 @@ while notsteady && t<smpl end if isoccbin if smoother_redux - aK(jnk,:,t+jnk) = out.zpiece(jnk,oo_.dr.order_var(oo_.dr.restrict_var_list)); + aK(jnk,:,t+jnk) = out.piecewise(jnk,oo_.dr.order_var(oo_.dr.restrict_var_list)); else - aK(jnk,oo_.dr.inv_order_var,t+jnk) = out.zpiece(jnk,:); + aK(jnk,oo_.dr.inv_order_var,t+jnk) = out.piecewise(jnk,:); end elseif jnk>1 aK(jnk,:,t+jnk) = T*dynare_squeeze(aK(jnk-1,:,t+jnk-1)); -- GitLab