diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m new file mode 100644 index 0000000000000000000000000000000000000000..a2ca4e98d0cec65ef1b2a01af848082038707cd2 --- /dev/null +++ b/matlab/check_list_of_variables.m @@ -0,0 +1,141 @@ +function varlist = check_list_of_variables(options_, M_, varlist) +% This function defines, if necessary, the list of endogenous variables +% for which the posterior statistics have to be computed. +% +% +% INPUTS +% +% options_ [structure] Dynare structure. +% M_ [structure] Dynare structure (related to model definition). +% varlist [string] Array of strings with name of the endogenous variables. +% +% OUTPUTS +% varlist [string] +% +% SPECIAL REQUIREMENTS + +% Copyright (C) 2003-2008 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 isempty(varlist) + disp(' ') + disp(['You did not declared endogenous variables after the estimation command.']) + info = 0; + cas = []; + if options_.bayesian_irf + cas = 'Posterior IRFs'; + info=1; + end + if options_.moments_varendo + if isempty(cas) + cas = 'Posterior moments'; + else + cas = [ cas , ', posterior moments']; + end + info=1; + end + if options_.smoother + if isempty(cas) + cas = 'Posterior smoothed variables'; + else + cas = [ cas , ', posterior smoothed variables']; + end + info=1; + end + if options_.smoother + if isempty(cas) + cas = 'Posterior smoothed variables'; + else + cas = [ cas , ', posterior smoothed variables']; + end + info=1; + end + if ~isempty(options_.filter_step_ahead) + if isempty(cas) + cas = 'Posterior k-step ahead filtered variables'; + else + cas = [ cas , ', posterior k-step ahead filtered variables']; + end + info=1; + end + if options_.forecast + if isempty(cas) + cas = 'Posterior forecasts'; + else + cas = [ cas , ' and posterior forecats']; + end + info=1; + end + string = [ cas , ' will be computed for the ' num2str(M_.endo_nbr) ' endogenous variables']; + string = [ string ' of your model, this can be very long....']; + format_text( string, 10) + if info + choice = []; + while isempty(choice) + disp(' ') + disp(' ') + disp('Choose one of the following options:') + disp(' ') + disp(' [1] Consider all the endogenous variables.') + disp(' [2] Consider all the observed endogenous variables.') + disp(' [3] Stop Dynare and change the mod file.') + disp(' ') + choice = input('options [default is 1] = '); + if isempty(choice) + choice=1; + end + if choice==1 + varlist = M_.endo_names; + elseif choice==2 + varlist = options_.varobs; + elseif choice==3 + varlist = NaN; + else + disp('') + disp('YOU HAVE TO ANSWER 1, 2 or 3!') + disp('') + end + end + end + if isnan(varlist) + edit([M_.fname '.mod']) + end + disp('') + end + + + + function format_text(remain, max_number_of_words_per_line) + index = 0; + line_of_text = []; + while ~isempty(remain) + [token, remain] = strtok(remain); + index = index+1; + if isempty(line_of_text) + line_of_text = token; + else + line_of_text = [line_of_text , ' ' , token]; + end + if index==max_number_of_words_per_line + disp(line_of_text) + index = 0; + line_of_text = []; + end + end + if index<max_number_of_words_per_line + disp(line_of_text) + end \ No newline at end of file diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m index 24e20e1e92616b5edd8026e2be8f574c4a51afcb..b6b638aefcb37a64d178a9de0e323b4eee8d671e 100644 --- a/matlab/dynare_estimation.m +++ b/matlab/dynare_estimation.m @@ -11,7 +11,7 @@ function dynare_estimation(var_list_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2007 Dynare Team +% Copyright (C) 2003-2008 Dynare Team % % This file is part of Dynare. % @@ -28,10 +28,15 @@ function dynare_estimation(var_list_) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -global M_ options_ oo_ estim_params_ -global bayestopt_ +global M_ options_ oo_ estim_params_ bayestopt_ + +var_list_ = check_list_of_variables(options_, M_, var_list_) +if isempty(var_list_) + return +else + options_.varlist = var_list_; +end -options_.varlist = var_list_; options_.lgyidx2varobs = zeros(size(M_.endo_names,1),1); for i = 1:size(M_.endo_names,1) tmp = strmatch(deblank(M_.endo_names(i,:)),options_.varobs,'exact');