From e3c12f509465303cec2648810184d865939466c3 Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Thu, 4 May 2017 16:55:16 +0200 Subject: [PATCH] var_expectation: stop processing if variable used that was not in model --- matlab/writeVarExpectationFunction.m | 17 ++++++++++------- tests/ECB/example1_var.mod | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/matlab/writeVarExpectationFunction.m b/matlab/writeVarExpectationFunction.m index 2e308f16a..f67f9af3f 100644 --- a/matlab/writeVarExpectationFunction.m +++ b/matlab/writeVarExpectationFunction.m @@ -66,9 +66,11 @@ for i=1:min(var_model_order, 2) end for j=1:nvars cidx = strcmp(strtrim(M_.var.(var_model_name).var_list_(j,:)), endo_names)'; - if any(cidx) - yidx(j, i) = M_.lead_lag_incidence(ridx, cidx); + if ~any(cidx) + error([strtrim(M_.var.(var_model_name).var_list_(j,:)) ' not found in the list of endogenous variables']); end + yidx(j, i) = M_.lead_lag_incidence(ridx, cidx); + end end yidx = yidx(:); @@ -79,12 +81,13 @@ if var_model_order > 2 for i=3:var_model_order for j=1:nvars idx = find(strcmp(strtrim(M_.var.(var_model_name).var_list_(j,:)), endo_names)); - if any(idx) - varidx = [M_.aux_vars.orig_index] == idx & [M_.aux_vars.orig_lead_lag] == -i; - cidx = [M_.aux_vars.endo_index]; - cidx = cidx(varidx); - y1idx(j, i-2) = M_.lead_lag_incidence(2, cidx); + if ~any(idx) + error([strtrim(M_.var.(var_model_name).var_list_(j,:)) ' not found in the list of endogenous variables']); end + varidx = [M_.aux_vars.orig_index] == idx & [M_.aux_vars.orig_lead_lag] == -i; + cidx = [M_.aux_vars.endo_index]; + cidx = cidx(varidx); + y1idx(j, i-2) = M_.lead_lag_incidence(2, cidx); end end yidx = [yidx ; y1idx(:)]; diff --git a/tests/ECB/example1_var.mod b/tests/ECB/example1_var.mod index aacfae408..680facdc2 100644 --- a/tests/ECB/example1_var.mod +++ b/tests/ECB/example1_var.mod @@ -13,7 +13,7 @@ theta = 2.95; phi = 0.1; -var_model(model_name=my_var_est, order=3) y varvar; +var_model(model_name=my_var_est, order=3) y b; model; c*theta*h^(1+psi)=(1-alpha)*y;