Skip to content
Snippets Groups Projects
Commit 3fa58473 authored by Stéphane Adjemian's avatar Stéphane Adjemian
Browse files

Explicitly list input arguments.

Do not use varargin.
parent a64be8ff
No related branches found
No related tags found
No related merge requests found
...@@ -87,17 +87,15 @@ model_dtransf = str2func('dynamic_backward_model_for_inversion'); ...@@ -87,17 +87,15 @@ model_dtransf = str2func('dynamic_backward_model_for_inversion');
% Initialization of the returned simulations (endogenous variables). % Initialization of the returned simulations (endogenous variables).
Y = NaN(DynareModel.endo_nbr, nobs(constraints)); Y = NaN(DynareModel.endo_nbr, nobs(constraints));
Y = [transpose(initialconditions{DynareModel.endo_names{:}}(constraints.dates(1)-1).data), Y]; Y = [transpose(initialconditions{DynareModel.endo_names{:}}(constraints.dates(1)-1).data), Y];
for i=1:nyctrl for i=1:nyctrl
Y(controlledendogenousvariables_id(i),2:end) = transpose(constraints.data(:,i)); Y(controlledendogenousvariables_id(i),2:end) = transpose(constraints.data(:,i));
end end
% Exogenous variables. % 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). % Inversion of the model, solvers for the free endogenous and exogenous variables (call a Newton-like algorithm in each period).
ity = 2; ity = 2;
itx = find(exogenousvariables.dates==constraints.dates(1)); itx = find(exogenousvariables.dates==constraints.dates(1));
DynareOptions.solve_algo=4; DynareOptions.solve_algo=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. % Simulates a stochastic linear backward looking model.
% %
...@@ -38,16 +38,20 @@ function simulations = simul_backward_linear_model(varargin) ...@@ -38,16 +38,20 @@ function simulations = simul_backward_linear_model(varargin)
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % 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) error('Model defined in %s.mod is not backward.', M_.fname)
end end
if M_.maximum_lag if ~DynareModel.maximum_lag
error('Model defined in %s.mod is not backward.', M_.fname) error('Model defined in %s.mod is not backward.', M_.fname)
end end
if nargin<6
innovations = [];
end
[initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic] = ... [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); [ysim, xsim] = simul_backward_linear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, nx, ny1, iy1, jdx, model_dynamic);
......
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. % Initialization of the routines simulating backward models.
...@@ -19,12 +20,6 @@ function [initialconditions, samplesize, innovations, DynareOptions, DynareModel ...@@ -19,12 +20,6 @@ function [initialconditions, samplesize, innovations, DynareOptions, DynareModel
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % 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. % Test if the model is backward.
if DynareModel.maximum_lead if DynareModel.maximum_lead
error('simul_backward_nonlinear_model:: The specified model is not backward looking!') error('simul_backward_nonlinear_model:: The specified model is not backward looking!')
...@@ -150,7 +145,7 @@ if missinginitialcondition ...@@ -150,7 +145,7 @@ if missinginitialcondition
error('Please fix the dseries object used for setting the initial conditions!') error('Please fix the dseries object used for setting the initial conditions!')
end end
if nargin<6 || isempty(varargin{6}) if nargin<6 || isempty(innovations)
% Set the covariance matrix of the structural innovations. % Set the covariance matrix of the structural innovations.
variances = diag(DynareModel.Sigma_e); variances = diag(DynareModel.Sigma_e);
number_of_shocks = length(DynareModel.Sigma_e); number_of_shocks = length(DynareModel.Sigma_e);
...@@ -174,7 +169,6 @@ if nargin<6 || isempty(varargin{6}) ...@@ -174,7 +169,6 @@ if nargin<6 || isempty(varargin{6})
DynareOutput.exo_simul(:,positive_var_indx) = DynareOutput.bnlms.shocks; DynareOutput.exo_simul(:,positive_var_indx) = DynareOutput.bnlms.shocks;
innovations = DynareOutput.exo_simul; innovations = DynareOutput.exo_simul;
else else
innovations = varargin{6};
DynareOutput.exo_simul = innovations; % innovations DynareOutput.exo_simul = innovations; % innovations
end end
......
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). % 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) ...@@ -38,16 +38,20 @@ function simulations = simul_backward_nonlinear_model(varargin)
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % 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) error('Model defined in %s.mod is not backward.', DynareModel.fname)
end end
if M_.maximum_lag if ~DynareModel.maximum_lag
error('Model defined in %s.mod is not backward.', M_.fname) error('Model defined in %s.mod is not backward.', DynareModel.fname)
end
if nargin<6
innovations = [];
end end
[initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, ~, ~, iy1, ~, model_dynamic] = ... [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); [ysim, xsim] = simul_backward_nonlinear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, iy1, model_dynamic);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment