From d1735e1d9e2c9e2c0a9536b86d70f114f1a3b9fa Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Mon, 18 Apr 2016 21:48:28 +0200 Subject: [PATCH] discretionary_policy_1.m: keep state space fixed even if state variable gets coefficient of 0 in solution by including appropriate 0 column. (Thanks to Junior Maih) Reverts 3b64c37cb30ec2e3171205dad34a16daa08432f6 --- matlab/discretionary_policy_1.m | 40 ++------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/matlab/discretionary_policy_1.m b/matlab/discretionary_policy_1.m index fd0416304..9d79ec3d0 100644 --- a/matlab/discretionary_policy_1.m +++ b/matlab/discretionary_policy_1.m @@ -137,51 +137,15 @@ else Hold=H; %save previous solution % Hold=[]; use this line if persistent command is not used. end -% update the following elements - -LLI=lead_lag_incidence; -LLI(MaxLag,:)=any(H); %check if variable drops out in solution - -LLI=LLI'; -tmp=find(LLI); -LLI(tmp)=1:numel(tmp); %renumber - -M_.lead_lag_incidence = LLI'; %update lead_lag_incidence - -%update info in M_ -max_lag = M_.maximum_endo_lag; -endo_nbr = M_.endo_nbr; -lead_lag_incidence = M_.lead_lag_incidence; - -fwrd_var = find(lead_lag_incidence(max_lag+2:end,:))'; -if max_lag > 0 - pred_var = find(lead_lag_incidence(1,:))'; - both_var = intersect(pred_var,fwrd_var); - pred_var = setdiff(pred_var,both_var); - fwrd_var = setdiff(fwrd_var,both_var); - stat_var = setdiff([1:endo_nbr]',union(union(pred_var,both_var),fwrd_var)); % static variables -else - pred_var = []; - both_var = []; - stat_var = setdiff([1:endo_nbr]',fwrd_var); -end -M_.nstatic=length(stat_var); -M_.nfwrd=length(fwrd_var); -M_.npred=length(pred_var); -M_.nboth=length(both_var); -M_.nspred=M_.npred+M_.nboth; -M_.nsfwrd=M_.nfwrd+M_.nboth; -M_.ndynamic=M_.endo_nbr-M_.nstatic; - % set the state dr=oo_.dr; dr.ys =zeros(endo_nbr,1); -dr=set_state_space(dr,M_,options_); %relies on M_.lead_lag_incidence being updated +dr=set_state_space(dr,M_,options_); order_var=dr.order_var; T=H(order_var,order_var); dr.ghu=G(order_var,:); -Selection=any(T); +Selection=lead_lag_incidence(1,order_var)>0;%select state variables dr.ghx=T(:,Selection); ys=NondistortionarySteadyState(M_);