diff --git a/matlab/discretionary_policy_1.m b/matlab/discretionary_policy_1.m index fd04163049cfb757be259f64bad928eec4658d68..9d79ec3d0c189efcb03cb6aff9130a2a45bafa06 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_);