From e8c430a9232a4732c9dfd04fd47bed92c7ecdeaf Mon Sep 17 00:00:00 2001
From: Michel Juillard <michel.juillard@mjui.fr>
Date: Sat, 16 Apr 2016 17:19:20 +0200
Subject: [PATCH] replaced transtion_matrix.m by kalman_transition_matrix.m

---
 matlab/AIM_first_order_solver.m   |  4 +-
 matlab/kalman_transition_matrix.m |  6 +--
 matlab/stochastic_solvers.m       |  2 +-
 matlab/transition_matrix.m        | 63 -------------------------------
 4 files changed, 6 insertions(+), 69 deletions(-)
 delete mode 100644 matlab/transition_matrix.m

diff --git a/matlab/AIM_first_order_solver.m b/matlab/AIM_first_order_solver.m
index f0c391013a..2e6adec8a5 100644
--- a/matlab/AIM_first_order_solver.m
+++ b/matlab/AIM_first_order_solver.m
@@ -77,8 +77,10 @@ function [dr,info]=AIM_first_order_solver(jacobia,M,dr,qz_criterium)
         info(2) = 1.0e+8;
         return
     end
-    [A,B] =transition_matrix(dr);
+    A = kalman_transition_matrix(dr,M.nstatic+(1:M.nspred), 1:M.nspred,...
+                                 M.exo_nbr);
     dr.eigval = eig(A);
+    disp(dr.eigval)
     nd = size(dr.kstate,1);
     nba = nd-sum( abs(dr.eigval) < qz_criterium );
 
diff --git a/matlab/kalman_transition_matrix.m b/matlab/kalman_transition_matrix.m
index 3c3397208d..9252a9fe61 100644
--- a/matlab/kalman_transition_matrix.m
+++ b/matlab/kalman_transition_matrix.m
@@ -36,11 +36,9 @@ n_iv = length(iv);
 
 A = zeros(n_iv,n_iv);
 
-i_n_iv = 1:n_iv;
-A(i_n_iv,ic) = dr.ghx(iv,:);
+A(:,ic) = dr.ghx(iv,:);
 
 if nargout>1
-    B = zeros(n_iv,exo_nbr);
-    B(i_n_iv,:) = dr.ghu(iv,:);
+    B = dr.ghu(iv,:);
 end
 
diff --git a/matlab/stochastic_solvers.m b/matlab/stochastic_solvers.m
index 8e4504905b..1c3971b0e3 100644
--- a/matlab/stochastic_solvers.m
+++ b/matlab/stochastic_solvers.m
@@ -210,7 +210,7 @@ if M_.maximum_endo_lead == 0
         if M_.exo_nbr
             dr.ghu =  -b\jacobia_(:,nz+1:end); 
         end
-        dr.eigval = eig(transition_matrix(dr));
+        dr.eigval = eig(kalman_transition_matrix(dr,nstatic+(1:nspred),1:nspred,M_.exo_nbr));
         dr.full_rank = 1;
         if any(abs(dr.eigval) > options_.qz_criterium)
             temp = sort(abs(dr.eigval));
diff --git a/matlab/transition_matrix.m b/matlab/transition_matrix.m
deleted file mode 100644
index f433641725..0000000000
--- a/matlab/transition_matrix.m
+++ /dev/null
@@ -1,63 +0,0 @@
-function [A,B] = transition_matrix(dr, varargin)
-% function [A,B] = transition_matrix(dr, varargin)
-% Makes transition matrices out of ghx and ghu
-%
-% INPUTS
-%    dr:        structure of decision rules for stochastic simulations
-% varargin:     {1}: M_
-%
-% OUTPUTS
-%    A:         matrix of effects of predetermined variables in linear solution (ghx)
-%    B:         matrix of effects of shocks in linear solution (ghu)
-%
-% SPECIAL REQUIREMENTS
-%    none
-
-% Copyright (C) 2003-2012 Dynare Team
-%
-% This file is part of Dynare.
-%
-% Dynare is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
-%
-% Dynare is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-% GNU General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
-
-if(length(varargin)<=0)
-    global M_
-else
-    M_=varargin{1};
-end;
-
-exo_nbr = M_.exo_nbr;
-ykmin_ = M_.maximum_endo_lag;
-
-nx = size(dr.ghx,2);
-kstate = dr.kstate;
-ikx = [M_.nstatic+1:M_.nstatic+M_.nspred];
-
-A = zeros(nx,nx);
-k0 = kstate(find(kstate(:,2) <= ykmin_+1),:);
-i0 = find(k0(:,2) == ykmin_+1);
-A(i0,:) = dr.ghx(ikx,:);
-B = zeros(nx,exo_nbr);
-if(isfield(dr,'ghu'))
-    B(i0,:) = dr.ghu(ikx,:);
-end;
-for i=ykmin_:-1:2
-    i1 = find(k0(:,2) == i);
-    n1 = size(i1,1);
-    j = zeros(n1,1);
-    for j1 = 1:n1
-        j(j1) = find(k0(i0,1)==k0(i1(j1),1));
-    end
-    A(i1,i0(j))=eye(n1);
-    i0 = i1;
-end
-- 
GitLab