From 3fa584737d62f05fd6536395322f36df1f4f965c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stepan@dynare.org> Date: Fri, 21 Jun 2019 11:18:45 +0200 Subject: [PATCH] Explicitly list input arguments. Do not use varargin. --- matlab/backward/backward_model_inversion.m | 4 +--- matlab/backward/simul_backward_linear_model.m | 12 ++++++++---- matlab/backward/simul_backward_model_init.m | 12 +++--------- matlab/backward/simul_backward_nonlinear_model.m | 16 ++++++++++------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/matlab/backward/backward_model_inversion.m b/matlab/backward/backward_model_inversion.m index fe4ae51528..99198771f5 100644 --- a/matlab/backward/backward_model_inversion.m +++ b/matlab/backward/backward_model_inversion.m @@ -87,17 +87,15 @@ model_dtransf = str2func('dynamic_backward_model_for_inversion'); % Initialization of the returned simulations (endogenous variables). Y = NaN(DynareModel.endo_nbr, nobs(constraints)); - Y = [transpose(initialconditions{DynareModel.endo_names{:}}(constraints.dates(1)-1).data), Y]; for i=1:nyctrl Y(controlledendogenousvariables_id(i),2:end) = transpose(constraints.data(:,i)); end % Exogenous variables. -X = exogenousvariables.data; %{exo_names{:}}(constraints.dates(1)-max(1,DynareModel.orig_maximum_exo_lag):constraints.dates(end)).data; +X = exogenousvariables.data; % Inversion of the model, solvers for the free endogenous and exogenous variables (call a Newton-like algorithm in each period). - ity = 2; itx = find(exogenousvariables.dates==constraints.dates(1)); DynareOptions.solve_algo=4; diff --git a/matlab/backward/simul_backward_linear_model.m b/matlab/backward/simul_backward_linear_model.m index da055a2bbc..3816429982 100644 --- a/matlab/backward/simul_backward_linear_model.m +++ b/matlab/backward/simul_backward_linear_model.m @@ -1,4 +1,4 @@ -function simulations = simul_backward_linear_model(varargin) +function simulations = simul_backward_linear_model(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations) % Simulates a stochastic linear backward looking model. % @@ -38,16 +38,20 @@ function simulations = simul_backward_linear_model(varargin) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -if M_.maximum_lead +if DynareModel.maximum_lead error('Model defined in %s.mod is not backward.', M_.fname) end -if M_.maximum_lag +if ~DynareModel.maximum_lag error('Model defined in %s.mod is not backward.', M_.fname) end +if nargin<6 + innovations = []; +end + [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic] = ... - simul_backward_model_init(varargin{:}); + simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations); [ysim, xsim] = simul_backward_linear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, nx, ny1, iy1, jdx, model_dynamic); diff --git a/matlab/backward/simul_backward_model_init.m b/matlab/backward/simul_backward_model_init.m index c519cebe56..ab1e30c6eb 100644 --- a/matlab/backward/simul_backward_model_init.m +++ b/matlab/backward/simul_backward_model_init.m @@ -1,4 +1,5 @@ -function [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic, y] = simul_backward_model_init(varargin) +function [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic, y] = ... + simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations) % Initialization of the routines simulating backward models. @@ -19,12 +20,6 @@ function [initialconditions, samplesize, innovations, DynareOptions, DynareModel % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -initialconditions = varargin{1}; -samplesize = varargin{2}; -DynareOptions = varargin{3}; -DynareModel = varargin{4}; -DynareOutput = varargin{5}; - % Test if the model is backward. if DynareModel.maximum_lead error('simul_backward_nonlinear_model:: The specified model is not backward looking!') @@ -150,7 +145,7 @@ if missinginitialcondition error('Please fix the dseries object used for setting the initial conditions!') end -if nargin<6 || isempty(varargin{6}) +if nargin<6 || isempty(innovations) % Set the covariance matrix of the structural innovations. variances = diag(DynareModel.Sigma_e); number_of_shocks = length(DynareModel.Sigma_e); @@ -174,7 +169,6 @@ if nargin<6 || isempty(varargin{6}) DynareOutput.exo_simul(:,positive_var_indx) = DynareOutput.bnlms.shocks; innovations = DynareOutput.exo_simul; else - innovations = varargin{6}; DynareOutput.exo_simul = innovations; % innovations end diff --git a/matlab/backward/simul_backward_nonlinear_model.m b/matlab/backward/simul_backward_nonlinear_model.m index 048d85e4df..956af53aff 100644 --- a/matlab/backward/simul_backward_nonlinear_model.m +++ b/matlab/backward/simul_backward_nonlinear_model.m @@ -1,4 +1,4 @@ -function simulations = simul_backward_nonlinear_model(varargin) +function simulations = simul_backward_nonlinear_model(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations) % Simulates a stochastic non linear backward looking model with arbitrary precision (a deterministic solver is used). % @@ -38,16 +38,20 @@ function simulations = simul_backward_nonlinear_model(varargin) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -if M_.maximum_lead - error('Model defined in %s.mod is not backward.', M_.fname) +if DynareModel.maximum_lead + error('Model defined in %s.mod is not backward.', DynareModel.fname) end -if M_.maximum_lag - error('Model defined in %s.mod is not backward.', M_.fname) +if ~DynareModel.maximum_lag + error('Model defined in %s.mod is not backward.', DynareModel.fname) +end + +if nargin<6 + innovations = []; end [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, ~, ~, iy1, ~, model_dynamic] = ... - simul_backward_model_init(varargin{:}); + simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations); [ysim, xsim] = simul_backward_nonlinear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, iy1, model_dynamic); -- GitLab