From 420cbc8202ef07db6ac2610a8545d681604a2e56 Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Fri, 8 Sep 2023 08:03:18 +0200
Subject: [PATCH] kalman_transition_matrix.m: remove redundant input argument

---
 matlab/AIM_first_order_solver.m                          | 3 +--
 matlab/DsgeSmoother.m                                    | 4 ++--
 matlab/UnivariateSpectralDensity.m                       | 2 +-
 matlab/conditional_variance_decomposition.m              | 2 +-
 matlab/dynare_resolve.m                                  | 4 ++--
 matlab/forcst.m                                          | 2 +-
 matlab/get_variance_of_endogenous_variables.m            | 2 +-
 matlab/gsa/map_ident_.m                                  | 4 ++--
 matlab/kalman_transition_matrix.m                        | 5 ++---
 matlab/moments/th_autocovariances.m                      | 2 +-
 matlab/non_linear_dsge_likelihood.m                      | 2 +-
 matlab/nonlinear-filters/solve_model_for_online_filter.m | 2 +-
 matlab/simultxdet.m                                      | 2 +-
 matlab/stochastic_solvers.m                              | 2 +-
 14 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/matlab/AIM_first_order_solver.m b/matlab/AIM_first_order_solver.m
index 5ac8129414..026c2619ee 100644
--- a/matlab/AIM_first_order_solver.m
+++ b/matlab/AIM_first_order_solver.m
@@ -77,8 +77,7 @@ if aimcode ~=1
     info(2) = 1.0e+8;
     return
 end
-A = kalman_transition_matrix(dr,M.nstatic+(1:M.nspred), 1:M.nspred,...
-                             M.exo_nbr);
+A = kalman_transition_matrix(dr,M.nstatic+(1:M.nspred), 1:M.nspred);
 dr.eigval = eig(A);
 disp(dr.eigval)
 nd = size(dr.kstate,1);
diff --git a/matlab/DsgeSmoother.m b/matlab/DsgeSmoother.m
index 3075e7a0b3..f2a7011348 100644
--- a/matlab/DsgeSmoother.m
+++ b/matlab/DsgeSmoother.m
@@ -386,7 +386,7 @@ else
             end
         end
         if isoccbin==0
-            [A,B] = kalman_transition_matrix(oo_.dr,(1:M_.endo_nbr)',ic,M_.exo_nbr);
+            [A,B] = kalman_transition_matrix(oo_.dr,(1:M_.endo_nbr)',ic);
         else
             opts_simul = options_.occbin.simul;
         end
@@ -540,7 +540,7 @@ else
         end
     else
         % reconstruct smoother
-        [A,B] = kalman_transition_matrix(oo_.dr,(1:M_.endo_nbr)',ic,M_.exo_nbr);
+        [A,B] = kalman_transition_matrix(oo_.dr,(1:M_.endo_nbr)',ic);
         iT = pinv(T);
         Tstar = A(~ismember(1:M_.endo_nbr,oo_.dr.restrict_var_list),oo_.dr.restrict_var_list);
         Rstar = B(~ismember(1:M_.endo_nbr,oo_.dr.restrict_var_list),:);
diff --git a/matlab/UnivariateSpectralDensity.m b/matlab/UnivariateSpectralDensity.m
index 31ce57f69c..d829ba3f30 100644
--- a/matlab/UnivariateSpectralDensity.m
+++ b/matlab/UnivariateSpectralDensity.m
@@ -92,7 +92,7 @@ for i=M_.maximum_lag:-1:2
     i0 = i1;
 end
 
-[A,B] = kalman_transition_matrix(oo_.dr,ikx',1:nx,M_.exo_nbr);
+[A,B] = kalman_transition_matrix(oo_.dr,ikx',1:nx);
 [vx, u] =  lyapunov_symm(A,B*M_.Sigma_e*B',options_.lyapunov_fixed_point_tol,options_.qz_criterium,options_.lyapunov_complex_threshold,[],options_.debug);
 iky = iv(ivar);
 if ~isempty(u)
diff --git a/matlab/conditional_variance_decomposition.m b/matlab/conditional_variance_decomposition.m
index 088a62ddc8..c9d92e406a 100644
--- a/matlab/conditional_variance_decomposition.m
+++ b/matlab/conditional_variance_decomposition.m
@@ -41,7 +41,7 @@ if any(Steps <= 0)
            'positive'])
 end
 
-[transition_matrix, impulse_matrix] = kalman_transition_matrix(dr,(1:M_.endo_nbr)',M_.nstatic+(1:M_.nspred)',M_.exo_nbr);
+[transition_matrix, impulse_matrix] = kalman_transition_matrix(dr,(1:M_.endo_nbr)',M_.nstatic+(1:M_.nspred)');
 
 number_of_state_innovations = M_.exo_nbr;
 number_of_state_equations = M_.endo_nbr;
diff --git a/matlab/dynare_resolve.m b/matlab/dynare_resolve.m
index aca22c68a5..b3bf6ed1a5 100644
--- a/matlab/dynare_resolve.m
+++ b/matlab/dynare_resolve.m
@@ -61,9 +61,9 @@ switch nargin
 end
 
 if nargout==1
-    A = kalman_transition_matrix(oo_.dr,iv,ic,M_.exo_nbr);
+    A = kalman_transition_matrix(oo_.dr,iv,ic);
     return
 end
 
-[A,B] = kalman_transition_matrix(oo_.dr,iv,ic,M_.exo_nbr);
+[A,B] = kalman_transition_matrix(oo_.dr,iv,ic);
 ys = oo_.dr.ys;
diff --git a/matlab/forcst.m b/matlab/forcst.m
index 874b8ea690..0d47fc7a9d 100644
--- a/matlab/forcst.m
+++ b/matlab/forcst.m
@@ -46,7 +46,7 @@ nspred = M_.nspred;
 nc = size(dr.ghx,2);
 endo_nbr = M_.endo_nbr;
 inv_order_var = dr.inv_order_var;
-[A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc,M_.exo_nbr);
+[A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc);
 
 if isempty(var_list)
     var_list = M_.endo_names(1:M_.orig_endo_nbr);
diff --git a/matlab/get_variance_of_endogenous_variables.m b/matlab/get_variance_of_endogenous_variables.m
index 3e37bb6f4e..85585cf85d 100644
--- a/matlab/get_variance_of_endogenous_variables.m
+++ b/matlab/get_variance_of_endogenous_variables.m
@@ -43,7 +43,7 @@ ghu = dr.ghu(i_var,:);
 nc = size(ghx,2);
 n = length(i_var);
 
-[A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc,M_.exo_nbr);
+[A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc);
 
 [vx,u] = lyapunov_symm(A,B*Sigma_e*B',options_.lyapunov_fixed_point_tol,options_.qz_criterium,options_.lyapunov_complex_threshold, [], options_.debug);
 
diff --git a/matlab/gsa/map_ident_.m b/matlab/gsa/map_ident_.m
index a0f353d23a..73eb02fbc9 100644
--- a/matlab/gsa/map_ident_.m
+++ b/matlab/gsa/map_ident_.m
@@ -129,7 +129,7 @@ if opt_gsa.load_ident_files==0
 
     dr.ghx = T(:, [1:(nc1-M_.exo_nbr)],1);
     dr.ghu = T(:, [(nc1-M_.exo_nbr+1):end], 1);
-    [Aa,Bb] = kalman_transition_matrix(dr,iv,ic,M_.exo_nbr);
+    [Aa,Bb] = kalman_transition_matrix(dr,iv,ic);
     %     bayestopt_.restrict_var_list, ...
     %     bayestopt_.restrict_columns, ...
     %     bayestopt_.restrict_aux, M_.exo_nbr);
@@ -142,7 +142,7 @@ if opt_gsa.load_ident_files==0
     for j=2:length(istable)
         dr.ghx = T(:, [1:(nc1-M_.exo_nbr)],j);
         dr.ghu = T(:, [(nc1-M_.exo_nbr+1):end], j);
-        [Aa,Bb] = kalman_transition_matrix(dr, iv, ic, M_.exo_nbr);
+        [Aa,Bb] = kalman_transition_matrix(dr, iv, ic);
         %       bayestopt_.restrict_var_list, ...
         %       bayestopt_.restrict_columns, ...
         %       bayestopt_.restrict_aux, M_.exo_nbr);
diff --git a/matlab/kalman_transition_matrix.m b/matlab/kalman_transition_matrix.m
index 427e3aa7e8..62ed7ef86d 100644
--- a/matlab/kalman_transition_matrix.m
+++ b/matlab/kalman_transition_matrix.m
@@ -1,12 +1,11 @@
-function [A,B] = kalman_transition_matrix(dr,iv,ic,exo_nbr)
-%function [A,B] = kalman_transition_matrix(dr,iv,ic,exo_nbr)
+function [A,B] = kalman_transition_matrix(dr,iv,ic)
+%function [A,B] = kalman_transition_matrix(dr,iv,ic)
 % Builds the transition equation of the state space representation out of ghx and ghu for Kalman filter
 %
 % INPUTS
 %    dr:      structure of decisions rules for stochastic simulations
 %    iv:      selected variables
 %    ic:      state variables position in the transition matrix columns
-%    exo_nbr: number of exogenous variables
 %
 % OUTPUTS
 %    A:       matrix of predetermined variables effects in linear solution (ghx)
diff --git a/matlab/moments/th_autocovariances.m b/matlab/moments/th_autocovariances.m
index 31fc2a25ff..dc002666b3 100644
--- a/matlab/moments/th_autocovariances.m
+++ b/matlab/moments/th_autocovariances.m
@@ -96,7 +96,7 @@ ghu_states_only = zeros(M_.nspred,M_.exo_nbr);
 ghu_states_only(1:M_.nspred,:) = ghu(index_states,:); %get shock impact on states only
 
 % state space representation for state variables only
-[A,B] = kalman_transition_matrix(dr,index_states,1:M_.nspred,M_.exo_nbr);
+[A,B] = kalman_transition_matrix(dr,index_states,1:M_.nspred);
 % Compute stationary variables for unfiltered moments (filtering will remove unit roots)
 if options_.hp_filter ~= 0 || options_.bandpass.indicator
     % By construction, all variables are stationary when filtered
diff --git a/matlab/non_linear_dsge_likelihood.m b/matlab/non_linear_dsge_likelihood.m
index 8455944a70..58dc3ee293 100644
--- a/matlab/non_linear_dsge_likelihood.m
+++ b/matlab/non_linear_dsge_likelihood.m
@@ -153,7 +153,7 @@ end
 switch DynareOptions.particle.initialization
   case 1% Initial state vector covariance is the ergodic variance associated to the first order Taylor-approximation of the model.
     StateVectorMean = ReducedForm.constant(mf0);
-    [A,B] = kalman_transition_matrix(dr,dr.restrict_var_list,dr.restrict_columns,Model.exo_nbr);
+    [A,B] = kalman_transition_matrix(dr,dr.restrict_var_list,dr.restrict_columns);
     StateVectorVariance = lyapunov_symm(A, B*Q*B', DynareOptions.lyapunov_fixed_point_tol, ...
                                         DynareOptions.qz_criterium, DynareOptions.lyapunov_complex_threshold, [], DynareOptions.debug);
     StateVectorVariance = StateVectorVariance(mf0,mf0);
diff --git a/matlab/nonlinear-filters/solve_model_for_online_filter.m b/matlab/nonlinear-filters/solve_model_for_online_filter.m
index 92cbf4c740..ae17f477f7 100644
--- a/matlab/nonlinear-filters/solve_model_for_online_filter.m
+++ b/matlab/nonlinear-filters/solve_model_for_online_filter.m
@@ -187,7 +187,7 @@ if setinitialcondition
     switch DynareOptions.particle.initialization
       case 1% Initial state vector covariance is the ergodic variance associated to the first order Taylor-approximation of the model.
         StateVectorMean = ReducedForm.state_variables_steady_state;%.constant(mf0);
-        [A,B] = kalman_transition_matrix(dr,dr.restrict_var_list,dr.restrict_columns,Model.exo_nbr);
+        [A,B] = kalman_transition_matrix(dr,dr.restrict_var_list,dr.restrict_columns);
         StateVectorVariance2 = lyapunov_symm(ReducedForm.ghx(mf0,:),ReducedForm.ghu(mf0,:)*ReducedForm.Q*ReducedForm.ghu(mf0,:)',DynareOptions.lyapunov_fixed_point_tol,DynareOptions.qz_criterium,DynareOptions.lyapunov_complex_threshold);
         StateVectorVariance = lyapunov_symm(A, B*ReducedForm.Q*B', DynareOptions.lyapunov_fixed_point_tol, ...
                                         DynareOptions.qz_criterium, DynareOptions.lyapunov_complex_threshold, [], DynareOptions.debug);
diff --git a/matlab/simultxdet.m b/matlab/simultxdet.m
index 2da4c02dfe..ba449664be 100644
--- a/matlab/simultxdet.m
+++ b/matlab/simultxdet.m
@@ -121,7 +121,7 @@ elseif iorder == 2
     end
 end
 
-[A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc,M_.exo_nbr);
+[A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc);
 
 inv_order_var = dr.inv_order_var;
 ghx1 = dr.ghx(inv_order_var(ivar),:);
diff --git a/matlab/stochastic_solvers.m b/matlab/stochastic_solvers.m
index b30da096cc..6b0c4a55e8 100644
--- a/matlab/stochastic_solvers.m
+++ b/matlab/stochastic_solvers.m
@@ -223,7 +223,7 @@ if M_.maximum_endo_lead == 0
         if M_.exo_nbr
             dr.ghu =  -b\jacobia_(:,nz+1:end);
         end
-        dr.eigval = eig(kalman_transition_matrix(dr,nstatic+(1:nspred),1:nspred,M_.exo_nbr));
+        dr.eigval = eig(kalman_transition_matrix(dr,nstatic+(1:nspred),1:nspred));
         dr.full_rank = 1;
         dr.edim = nnz(abs(dr.eigval) > options_.qz_criterium);
         dr.sdim = nd-dr.edim;
-- 
GitLab