shock_decomposition_backward: workaround for bug in MATLAB ≤ R2019a

Ref. dseries#45
time-shift
Sébastien Villemot 2021-01-27 17:54:14 +01:00
parent 0402c56ee7
commit d52a35889c
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
1 changed files with 11 additions and 3 deletions

View File

@ -22,7 +22,7 @@ function decomposition = shock_decomposition_backward(simulations, initialcondit
% and nperiods is the number of simulation periods (i.e. excluding the initial
% conditions)
% Copyright © 2020 Dynare Team
% Copyright © 2020-2021 Dynare Team
%
% This file is part of Dynare.
%
@ -94,8 +94,16 @@ for i = length(shocklist):-1:1
end
% Compute the contribution of the current shock or shock group
contribution = simulations{M_.endo_names{:}}.data(initialconditions.nobs+1:end, :) ...
- simulations_new{M_.endo_names{:}}.data(initialconditions.nobs+1:end, :);
if ~isoctave && matlab_ver_less_than('9.7')
% Workaround for MATLAB bug described in dseries#45
% The solution is to avoid using the "end" keyword
myend = nobs(simulations);
contribution = simulations{M_.endo_names{:}}.data(initialconditions.nobs+1:myend, :) ...
- simulations_new{M_.endo_names{:}}.data(initialconditions.nobs+1:myend, :);
else
contribution = simulations{M_.endo_names{:}}.data(initialconditions.nobs+1:end, :) ...
- simulations_new{M_.endo_names{:}}.data(initialconditions.nobs+1:end, :);
end
decomposition(:, i, :) = contribution';
simulations = simulations_new;