From c373ed3897e036e586d258d480ef992bd621634f Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Sun, 14 May 2017 11:03:05 +0200
Subject: [PATCH] Make sure varlists are correctly updated after removal of
 doubly defined variables via varlist_indices.m

Otherwise the mapping between i_var and varlist does not match anymore (results in e.g. wrong display of IRFs)
---
 matlab/check_list_of_variables.m         | 4 ++--
 matlab/initial_condition_decomposition.m | 3 ++-
 matlab/plot_shock_decomposition.m        | 3 ++-
 matlab/realtime_shock_decomposition.m    | 3 ++-
 matlab/shock_decomposition.m             | 3 ++-
 matlab/stoch_simul.m                     | 3 ++-
 matlab/varlist_indices.m                 | 2 +-
 7 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m
index e9fb3be3b..ab1e8cde0 100644
--- a/matlab/check_list_of_variables.m
+++ b/matlab/check_list_of_variables.m
@@ -33,8 +33,8 @@ function varlist = check_list_of_variables(options_, M_, varlist)
 
 %get uniques
 
-[junk1,junk2,index_uniqes] = varlist_indices(varlist,M_.endo_names);
-varlist=varlist(index_uniqes,:);
+[junk1,junk2,index_uniques] = varlist_indices(varlist,M_.endo_names);
+varlist=varlist(index_uniques,:);
 
 msg = 0;
 if options_.dsge_var && options_.bayesian_irf
diff --git a/matlab/initial_condition_decomposition.m b/matlab/initial_condition_decomposition.m
index 1eb2b7959..7e2f0ae2c 100644
--- a/matlab/initial_condition_decomposition.m
+++ b/matlab/initial_condition_decomposition.m
@@ -50,7 +50,8 @@ if size(varlist,1) == 0
     varlist = M_.endo_names(1:M_.orig_endo_nbr,:);
 end
 
-[i_var,nvar] = varlist_indices(varlist,M_.endo_names);
+[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names);
+varlist=varlist(index_uniques,:);
 
 % number of variables
 endo_nbr = M_.endo_nbr;
diff --git a/matlab/plot_shock_decomposition.m b/matlab/plot_shock_decomposition.m
index 15c97506a..698192a91 100644
--- a/matlab/plot_shock_decomposition.m
+++ b/matlab/plot_shock_decomposition.m
@@ -38,7 +38,8 @@ if size(varlist,1) == 0
     varlist = M_.endo_names(1:M_.orig_endo_nbr,:);
 end
 
-[i_var,nvar] = varlist_indices(varlist,M_.endo_names);
+[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names);
+varlist=varlist(index_uniques,:);
 
 % number of variables
 endo_nbr = M_.endo_nbr;
diff --git a/matlab/realtime_shock_decomposition.m b/matlab/realtime_shock_decomposition.m
index 2e47066e1..2cdb6d949 100644
--- a/matlab/realtime_shock_decomposition.m
+++ b/matlab/realtime_shock_decomposition.m
@@ -44,7 +44,8 @@ if size(varlist,1) == 0
     varlist = M_.endo_names(1:M_.orig_endo_nbr,:);
 end
 
-[i_var,nvar] = varlist_indices(varlist,M_.endo_names);
+[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names);
+varlist=varlist(index_uniques,:);
 
 % number of variables
 endo_nbr = M_.endo_nbr;
diff --git a/matlab/shock_decomposition.m b/matlab/shock_decomposition.m
index 9c5144110..89f3c431b 100644
--- a/matlab/shock_decomposition.m
+++ b/matlab/shock_decomposition.m
@@ -45,7 +45,8 @@ if size(varlist,1) == 0
     varlist = M_.endo_names(1:M_.orig_endo_nbr,:);
 end
 
-[i_var,nvar] = varlist_indices(varlist,M_.endo_names);
+[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names);
+varlist=varlist(index_uniques,:);
 
 % number of variables
 endo_nbr = M_.endo_nbr;
diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m
index d187a45a5..5465eaa96 100644
--- a/matlab/stoch_simul.m
+++ b/matlab/stoch_simul.m
@@ -56,7 +56,8 @@ if size(var_list,1) == 0
     var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
 end
 
-[i_var,nvar] = varlist_indices(var_list,M_.endo_names);
+[i_var,nvar,index_uniques] = varlist_indices(var_list,M_.endo_names);
+var_list=var_list(index_uniques,:);
 
 iter_ = max(options_.periods,1);
 if M_.exo_nbr > 0
diff --git a/matlab/varlist_indices.m b/matlab/varlist_indices.m
index 1299e54d5..5d593c006 100644
--- a/matlab/varlist_indices.m
+++ b/matlab/varlist_indices.m
@@ -1,5 +1,5 @@
 function [i_var,nvar,index_uniques] = varlist_indices(sublist,list)
-% function [i_var,nvar] = varlist_indices(sublist,list)
+% function [i_var,nvar,index_uniques] = varlist_indices(sublist,list)
 % returns the indices of a list of endogenous variables
 %
 % INPUT
-- 
GitLab