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