From 7be8f10e0e035e503c391979ae41415ffaf64e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Scylla=29?= Date: Tue, 10 Oct 2017 10:05:59 +0200 Subject: [PATCH] Use cells of strings instead of char arrays. --- examples/NK_baseline_steadystate.m | 6 +- matlab/GetPosteriorParametersStatistics.m | 252 ++++++------ matlab/PlotPosteriorDistributions.m | 65 ++-- matlab/PosteriorIRF.m | 44 +-- matlab/PosteriorIRF_core1.m | 4 +- matlab/PosteriorIRF_core2.m | 12 +- matlab/UnivariateSpectralDensity.m | 16 +- matlab/WriteShockDecomp2Excel.m | 8 +- matlab/annualized_shock_decomposition.m | 23 +- matlab/backward/backward_model_forecast.m | 4 +- matlab/backward/backward_model_irf.m | 12 +- matlab/backward/simul_backward_model.m | 4 +- matlab/backward/simul_backward_model_init.m | 18 +- matlab/cellofchararraymaxlength.m | 28 ++ matlab/check_list_of_variables.m | 54 +-- matlab/compute_moments_varendo.m | 198 +++++----- ...al_variance_decomposition_ME_mc_analysis.m | 27 +- ...ional_variance_decomposition_mc_analysis.m | 20 +- .../convergence_diagnostics/McMCDiagnostics.m | 92 ++--- matlab/datatomfile.m | 20 +- matlab/discretionary_policy.m | 7 +- matlab/discretionary_policy_1.m | 8 +- matlab/disp_dr.m | 52 ++- matlab/disp_model_summary.m | 10 +- matlab/disp_moments.m | 88 +++-- matlab/disp_steady_state.m | 7 +- matlab/disp_th_moments.m | 148 +++---- ...splay_conditional_variance_decomposition.m | 32 +- matlab/display_estimation_results_table.m | 144 +++---- matlab/display_problematic_vars_Jacobian.m | 114 +++--- matlab/dsge_var_likelihood.m | 4 +- matlab/dyn2vec.m | 8 +- matlab/dyn_forecast.m | 26 +- matlab/dyn_latex_table.m | 102 +++-- matlab/dyn_ramsey_static.m | 8 +- matlab/dyn_risky_steadystate_solver.m | 12 +- matlab/dynare_config.m | 6 +- matlab/dynare_estimation.m | 18 +- matlab/dynare_estimation_1.m | 33 +- matlab/dynare_estimation_init.m | 18 +- matlab/dynare_identification.m | 17 +- matlab/dynare_sensitivity.m | 42 +- matlab/dynasave.m | 26 +- matlab/dynatype.m | 17 +- matlab/dyntable.m | 72 ++-- matlab/endogenous_prior_restrictions.m | 20 +- matlab/ep/extended_path.m | 4 +- matlab/evaluate_planner_objective.m | 4 +- matlab/evaluate_steady_state.m | 6 +- matlab/evaluate_steady_state_file.m | 14 +- matlab/forcst.m | 34 +- matlab/forecast_graphs.m | 32 +- matlab/formdata.m | 16 +- matlab/generate_trace_plots.m | 40 +- matlab/getIrfShocksIndx.m | 4 +- matlab/get_optimal_policy_discount_factor.m | 4 +- matlab/get_posterior_parameters.m | 10 +- matlab/get_the_name.m | 38 +- matlab/get_variables_list.m | 25 +- matlab/global_initialization.m | 4 +- matlab/graph_decomp.m | 14 +- matlab/graph_decomp_detail.m | 17 +- matlab/gsa/filt_mc_.m | 362 ++++++------------ matlab/gsa/map_calibration.m | 12 +- matlab/gsa/map_ident_.m | 6 +- matlab/gsa/mc_moments.m | 4 +- matlab/gsa/mcf_analysis.m | 10 +- matlab/gsa/redform_map.m | 28 +- matlab/gsa/redform_screen.m | 37 +- matlab/gsa/scatter_callback.m | 6 +- matlab/gsa/stab_map_.m | 10 +- matlab/gsa/stab_map_2.m | 8 +- matlab/gsa/th_moments.m | 6 +- matlab/histvalf.m | 6 +- matlab/homotopy2.m | 10 +- matlab/ident_bruteforce.m | 6 +- matlab/imcforecast.m | 20 +- matlab/init_plan.m | 8 +- matlab/initial_condition_decomposition.m | 28 +- matlab/initial_estimation_checks.m | 4 +- matlab/initialize_from_mode.m | 10 +- matlab/initvalf.m | 18 +- matlab/k_order_pert.m | 9 +- matlab/lmmcp/get_complementarity_conditions.m | 6 +- matlab/lnsrch1.m | 8 +- matlab/load_mat_file_data_legacy.m | 6 +- matlab/marginal_density.m | 8 +- matlab/model_comparison.m | 50 ++- matlab/model_diagnostics.m | 6 +- matlab/model_info.m | 28 +- matlab/model_inversion.m | 6 +- matlab/modules/reporting | 2 +- matlab/ms-sbvar/plot_ms_forecast.m | 18 +- matlab/ms-sbvar/plot_ms_irf.m | 32 +- .../ms-sbvar/plot_ms_variance_decomposition.m | 10 +- ...ot_ms_variance_decomposition_error_bands.m | 26 +- matlab/mult_elimination.m | 29 +- matlab/name2index.m | 22 +- matlab/occbin/call_solve_one_constraint.m | 10 +- matlab/occbin/call_solve_two_constraints.m | 14 +- .../occbin/get_complementarity_conditions.m | 6 +- .../get_occbin_complementarity_conditions.m | 6 +- matlab/occbin/mkdata.m | 8 +- matlab/occbin/mkdatap_anticipated.m | 9 +- matlab/occbin/setss.m | 8 +- matlab/occbin/solve_no_constraint.m | 8 +- matlab/occbin/solve_no_constraint_noclear.m | 8 +- matlab/occbin/solve_one_constraint.1.m | 8 +- matlab/occbin/solve_one_constraint.m | 8 +- matlab/occbin/solve_two_constraints.m | 8 +- matlab/osr.m | 6 +- matlab/osr1.m | 8 +- .../partial_information/PCL_Part_info_irf.m | 8 +- .../PCL_Part_info_moments.m | 50 +-- matlab/partial_information/dr1_PI.m | 6 +- .../det_cond_forecast.m | 21 +- .../perfect_foresight_setup.m | 14 +- .../perfect_foresight_solver.m | 4 +- matlab/perfect-foresight-models/sim1.m | 14 +- matlab/plot_icforecast.m | 20 +- matlab/plot_shock_decomposition.m | 18 +- matlab/pm3.m | 33 +- matlab/pm3_core.m | 4 +- matlab/posterior_analysis.m | 5 +- matlab/print_info.m | 9 +- matlab/print_moments_implied_prior.m | 8 +- matlab/prior_posterior_statistics.m | 35 +- matlab/prior_sampler.m | 4 +- matlab/ramsey_policy.m | 7 +- matlab/read_data_.m | 4 +- matlab/realtime_shock_decomposition.m | 14 +- matlab/resid.m | 4 +- matlab/resol.m | 4 +- matlab/reversed_extended_path.m | 4 +- matlab/row_header_width.m | 23 +- matlab/rplot.m | 42 +- matlab/save_params_and_steady_state.m | 10 +- .../send_endogenous_variables_to_workspace.m | 5 +- matlab/set_default_option.m | 10 +- matlab/set_historical_values.m | 19 +- matlab/set_local_param_value.m | 4 +- matlab/set_prior.m | 38 +- matlab/shock_decomposition.m | 14 +- matlab/simulated_moment_uncertainty.m | 6 +- matlab/simulated_moments_estimation.m | 8 +- matlab/simultxdet.m | 11 +- matlab/smoother2histval.m | 6 +- matlab/solve_one_boundary.m | 6 +- matlab/solve_two_boundaries.m | 4 +- matlab/steady.m | 10 +- matlab/stoch_simul.m | 118 +++--- matlab/store_smoother_results.m | 28 +- matlab/subset.m | 4 +- matlab/test_for_deep_parameters_calibration.m | 6 +- matlab/trace_plot.m | 6 +- matlab/varlist_indices.m | 59 ++- matlab/write_latex_definitions.m | 8 +- matlab/write_latex_parameter_table.m | 27 +- matlab/writedata.m | 6 +- matlab/writedata_text.m | 10 +- preprocessor/ComputingTasks.cc | 8 +- preprocessor/SymbolList.cc | 8 +- preprocessor/SymbolTable.cc | 65 ++-- tests/conditional_forecasts/5/fs2000_cal.mod | 2 +- ...ison_policy_functions_dynare_mathematica.m | 4 +- .../multiple_lead_lags/sim_endo_lead_lag.mod | 4 +- .../multiple_lead_lags/sim_exo_lead_lag.mod | 2 +- .../multiple_lead_lags/sim_lead_lag.mod | 2 +- tests/ecb/backward-models/solow_forecast.mod | 2 +- tests/ecb/backward-models/solow_irf.mod | 2 +- tests/forecast/Hansen_exo_det_forecast.mod | 4 +- .../as2007/as2007_steadystate.m | 14 +- tests/identification/kim/kim2_steadystate.m | 14 +- tests/k_order_perturbation/fs2000k4.mod | 2 +- .../fs2000_uncorr_ME.mod | 8 +- .../fs2000ns_uncorr_ME.mod | 8 +- tests/kalman_filter_smoother/algo2.mod | 12 +- tests/kalman_filter_smoother/algo4.mod | 12 +- tests/kalman_filter_smoother/algoH2.mod | 12 +- .../compare_results_simulation/fs2000.mod | 7 +- .../compare_results_simulation/fs2000_ML.mod | 7 +- .../fs2000_ML_loglinear.mod | 7 +- .../fs2000_loglinear.mod | 7 +- .../generate_trend_stationary_AR1.m | 6 +- .../optimal_policy/mult_elimination_test.mod | 2 +- tests/particle/dsge_base2_steadystate.m | 6 +- tests/partitioning/partitions.mod | 2 +- .../steady_state/walsh1_old_ss_steadystate.m | 6 +- 188 files changed, 2024 insertions(+), 2181 deletions(-) create mode 100644 matlab/cellofchararraymaxlength.m diff --git a/examples/NK_baseline_steadystate.m b/examples/NK_baseline_steadystate.m index 795c09979..c8a2f5d0e 100644 --- a/examples/NK_baseline_steadystate.m +++ b/examples/NK_baseline_steadystate.m @@ -17,7 +17,7 @@ global M_ % read out parameters to access them with their name NumberOfParameters = M_.param_nbr; for ii = 1:NumberOfParameters - paramname = deblank(M_.param_names(ii,:)); + paramname = M_.param_names{ii}; eval([ paramname ' = M_.params(' int2str(ii) ');']); end % initialize indicator @@ -96,11 +96,11 @@ g2=epsilon/(epsilon-1)*g1; %% end own model equations for iter = 1:length(M_.params) %update parameters set in the file - eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names(iter,:) ';' ]) + eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names{iter} ';' ]) end NumberOfEndogenousVariables = M_.orig_endo_nbr; %auxiliary variables are set automatically for ii = 1:NumberOfEndogenousVariables - varname = deblank(M_.endo_names(ii,:)); + varname = M_.endo_names{ii}; eval(['ys(' int2str(ii) ') = ' varname ';']); end diff --git a/matlab/GetPosteriorParametersStatistics.m b/matlab/GetPosteriorParametersStatistics.m index 6bea8d66a..6be075ad0 100644 --- a/matlab/GetPosteriorParametersStatistics.m +++ b/matlab/GetPosteriorParametersStatistics.m @@ -8,7 +8,7 @@ function oo_ = GetPosteriorParametersStatistics(estim_params_, M_, options_, bay % options_ [structure] % bayestopt_ [structure] % oo_ [structure] -% pnames [char] Array of char, names of the prior shapes available +% pnames [cell] cell of strings, names of the prior shapes available % % OUTPUTS % oo_ [structure] @@ -16,7 +16,7 @@ function oo_ = GetPosteriorParametersStatistics(estim_params_, M_, options_, bay % SPECIAL REQUIREMENTS % None. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -60,7 +60,7 @@ FirstMhFile = record.KeepedDraws.FirstMhFile; NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws); clear record; -header_width = row_header_width(M_,estim_params_,bayestopt_); +header_width = row_header_width(M_, estim_params_, bayestopt_); hpd_interval=[num2str(options_.mh_conf_sig*100), '% HPD interval']; tit2 = sprintf('%-*s %12s %12s %23s %8s %12s\n',header_width,' ','prior mean','post. mean',hpd_interval,'prior','pstdev'); pformat = '%-*s %12.3f % 12.4f %11.4f %11.4f %7s %12.4f'; @@ -70,23 +70,26 @@ disp('ESTIMATION RESULTS') skipline() try - disp(sprintf('Log data density is %f.',oo_.MarginalDensity.ModifiedHarmonicMean)) + disp(sprintf('Log data density is %f.', oo_.MarginalDensity.ModifiedHarmonicMean)) catch [marginal,oo_] = marginal_density(M_, options_, estim_params_, oo_, bayestopt_); - disp(sprintf('Log data density is %f.',oo_.MarginalDensity.ModifiedHarmonicMean)) + disp(sprintf('Log data density is %f.', oo_.MarginalDensity.ModifiedHarmonicMean)) end + num_draws=NumberOfDraws*options_.mh_nblck; hpd_draws = round((1-options_.mh_conf_sig)*num_draws); + if hpd_draws<2 fprintf('posterior_moments: There are not enough draws computes to compute HPD Intervals. Skipping their computation.\n') end if num_draws<9 fprintf('posterior_moments: There are not enough draws computes to compute deciles. Skipping their computation.\n') end + if np type = 'parameters'; if TeX - fid = TeXBegin(OutputFolder,M_.fname,1,type); + fid = TeXBegin(OutputFolder, M_.fname, 1, type); end skipline() disp(type) @@ -94,44 +97,42 @@ if np ip = nvx+nvn+ncx+ncn+1; for i=1:np if options_.mh_replic - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, ... - density] = posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); name = bayestopt_.name{ip}; - oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + oo_ = Filloo(oo_, name, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); else try name = bayestopt_.name{ip}; - [post_mean,hpd_interval,post_var] = Extractoo(oo_,name,type); + [post_mean, hpd_interval, post_var] = Extractoo(oo_, name, type); catch - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, ... - density] = posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); name = bayestopt_.name{ip}; - oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + oo_ = Filloo(oo_, name, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); end end - disp(sprintf(pformat,header_width,name,bayestopt_.p1(ip),... + disp(sprintf(pformat, header_width, name, bayestopt_.p1(ip),... post_mean, ... hpd_interval, ... - pnames(bayestopt_.pshape(ip)+1,:), ... + pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p2(ip))); if TeX k = estim_params_.param_vals(i,1); - name = deblank(M_.param_names_tex(k,:)); - TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... - bayestopt_.p2(ip),post_mean,sqrt(post_var),hpd_interval); + name = M_.param_names_tex{k}; + TeXCore(fid, name, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p1(ip), bayestopt_.p2(ip), post_mean, sqrt(post_var), hpd_interval); end ip = ip+1; end if TeX - TeXEnd(fid,1,type); + TeXEnd(fid, 1, type); end end + if nvx type = 'shocks_std'; if TeX - fid = TeXBegin(OutputFolder,FileName,2,'standard deviation of structural shocks'); + fid = TeXBegin(OutputFolder, FileName,2, 'standard deviation of structural shocks'); end ip = 1; skipline() @@ -139,45 +140,43 @@ if nvx disp(tit2) for i=1:nvx if options_.mh_replic - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); k = estim_params_.var_exo(i,1); - name = deblank(M_.exo_names(k,:)); - oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + name = M_.exo_names{k}; + oo_ = Filloo(oo_, name, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); M_.Sigma_e(k,k) = post_mean*post_mean; else try k = estim_params_.var_exo(i,1); - name = deblank(M_.exo_names(k,:)); - [post_mean,hpd_interval,post_var] = Extractoo(oo_,name,type); + name = M_.exo_names{k}; + [post_mean, hpd_interval, post_var] = Extractoo(oo_, name, type); catch - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + posterior_moments(Draws, 1, options_.mh_conf_sig); k = estim_params_.var_exo(i,1); - name = deblank(M_.exo_names(k,:)); - oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + name = M_.exo_names{k}; + oo_ = Filloo(oo_, name, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); M_.Sigma_e(k,k) = post_mean*post_mean; end end - disp(sprintf(pformat,header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval,... - pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); + disp(sprintf(pformat,header_width,name, bayestopt_.p1(ip), post_mean, hpd_interval, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p2(ip))); if TeX - name = deblank(M_.exo_names_tex(k,:)); - TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... - bayestopt_.p2(ip),post_mean,sqrt(post_var),hpd_interval); + name = M_.exo_names_tex{k}; + TeXCore(fid,name, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p1(ip), bayestopt_.p2(ip), post_mean, sqrt(post_var), hpd_interval); end ip = ip+1; end if TeX - TeXEnd(fid,2,'standard deviation of structural shocks'); + TeXEnd(fid, 2, 'standard deviation of structural shocks'); end end + if nvn type = 'measurement_errors_std'; if TeX - fid = TeXBegin(OutputFolder,FileName,3,'standard deviation of measurement errors'); + fid = TeXBegin(OutputFolder, FileName, 3, 'standard deviation of measurement errors'); end skipline() disp('standard deviation of measurement errors') @@ -185,37 +184,34 @@ if nvn ip = nvx+1; for i=1:nvn if options_.mh_replic - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)}; - oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + oo_ = Filloo(oo_, name, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); else try name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)}; [post_mean,hpd_interval,post_var] = Extractoo(oo_,name,type); catch Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1,options_.mh_conf_sig); name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)}; oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); end end - disp(sprintf(pformat,header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... - pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); + disp(sprintf(pformat, header_width, name,bayestopt_.p1(ip), post_mean, hpd_interval, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p2(ip))); if TeX k = estim_params_.var_endo(i,1); - name = deblank(M_.endo_names_tex(k,:)); - TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... - bayestopt_.p2(ip),post_mean,sqrt(post_var),hpd_interval); + name = M_.endo_names_tex{k}; + TeXCore(fid, name, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p1(ip), bayestopt_.p2(ip), post_mean, sqrt(post_var), hpd_interval); end ip = ip+1; end if TeX - TeXEnd(fid,3,'standard deviation of measurement errors'); + TeXEnd(fid, 3, 'standard deviation of measurement errors'); end end + if ncx type = 'shocks_corr'; if TeX @@ -227,53 +223,49 @@ if ncx ip = nvx+nvn+1; for i=1:ncx if options_.mh_replic - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1,options_.mh_conf_sig); k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))]; - NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - oo_ = Filloo(oo_,NAME,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + name = sprintf('%s,%s', M_.exo_names{k1}, M_.exo_names{k2}); + NAME = sprintf('%s_%s', M_.exo_names{k1}, M_.exo_names{k2}); + oo_ = Filloo(oo_, NAME, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); M_.Sigma_e(k1,k2) = post_mean*sqrt(M_.Sigma_e(k1,k1)*M_.Sigma_e(k2,k2)); M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2); else try k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))]; - NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - [post_mean,hpd_interval,post_var] = Extractoo(oo_,NAME,type); + name = sprintf('%s,%s', M_.exo_names{k1}, M_.exo_names{k2}); + NAME = sprintf('%s_%s', M_.exo_names{k1}, M_.exo_names{k2}); + [post_mean,hpd_interval,post_var] = Extractoo(oo_, NAME, type); catch - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))]; - NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - oo_ = Filloo(oo_,NAME,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); + name = sprintf('%s,%s', M_.exo_names{k1}, M_.exo_names{k2}); + NAME = sprintf('%s_%s', M_.exo_names{k1}, M_.exo_names{k2}); + oo_ = Filloo(oo_, NAME, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); M_.Sigma_e(k1,k2) = post_mean*sqrt(M_.Sigma_e(k1,k1)*M_.Sigma_e(k2,k2)); M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2); end end - disp(sprintf(pformat, header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... - pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); + disp(sprintf(pformat, header_width,name, bayestopt_.p1(ip), post_mean, hpd_interval, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p2(ip))); if TeX - name = ['(',deblank(M_.exo_names_tex(k1,:)) ',' deblank(M_.exo_names_tex(k2,:)),')']; - TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... - bayestopt_.p2(ip),post_mean,sqrt(post_var),hpd_interval); + name = sprintf('(%s,%s)', M_.exo_names_tex{k1}, M_.exo_names_tex{k2}); + TeXCore(fid, name, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p1(ip), bayestopt_.p2(ip), post_mean, sqrt(post_var), hpd_interval); end ip = ip+1; end if TeX - TeXEnd(fid,4,'correlation of structural shocks'); + TeXEnd(fid, 4, 'correlation of structural shocks'); end end if ncn type = 'measurement_errors_corr'; if TeX - fid = TeXBegin(OutputFolder,FileName,5,'correlation of measurement errors'); + fid = TeXBegin(OutputFolder, FileName, 5, 'correlation of measurement errors'); end skipline() disp('correlation of measurement errors') @@ -282,44 +274,38 @@ if ncn for i=1:ncn if options_.mh_replic Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))]; - NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; - oo_ = Filloo(oo_,NAME,type,post_mean,hpd_interval,... - post_median,post_var,post_deciles,density); + name = sprintf('%s,%s', M_.endo_names{k1}, M_.endo_names{k2}); + NAME = sprintf('%s_%s', M_.endo_names{k1}, M_.endo_names{k2}); + oo_ = Filloo(oo_, NAME, type, post_mean, hpd_interval, post_median, post_var, post_deciles,density); else try k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))]; - NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; - [post_mean,hpd_interval,post_var] = Extractoo(oo_,NAME,type); + name = sprintf('%s,%s', M_.endo_names{k1}, M_.endo_names{k2}); + NAME = sprintf('%s_%s', M_.endo_names{k1}, M_.endo_names{k2}); + [post_mean,hpd_interval,post_var] = Extractoo(oo_, NAME, type); catch - Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(Draws,1,options_.mh_conf_sig); + Draws = GetAllPosteriorDraws(ip, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws, 1, options_.mh_conf_sig); k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))]; - NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; - oo_ = Filloo(oo_,NAME,type,post_mean,hpd_interval,... - post_median,post_var,post_deciles,density); + name = sprintf('%s,%s', M_.endo_names{k1}, M_.endo_names{k2}); + NAME = sprintf('%s_%s', M_.endo_names{k1}, M_.endo_names{k2}); + oo_ = Filloo(oo_, NAME, type, post_mean, hpd_interval, post_median, post_var, post_deciles, density); end end - disp(sprintf(pformat, header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... - pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); + disp(sprintf(pformat, header_width, name, bayestopt_.p1(ip), post_mean, hpd_interval, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p2(ip))); if TeX - name = ['(',deblank(M_.endo_names_tex(k1,:)) ',' deblank(M_.endo_names_tex(k2,:)),')']; - TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... - bayestopt_.p2(ip),post_mean,sqrt(post_var),hpd_interval); + name = sprintf('(%s,%s)', M_.endo_names_tex{k1}, M_.endo_names_tex{k2}); + TeXCore(fid, name, pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p1(ip), bayestopt_.p2(ip), post_mean, sqrt(post_var), hpd_interval); end ip = ip+1; end if TeX - TeXEnd(fid,5,'correlation of measurement errors'); + TeXEnd(fid, 5, 'correlation of measurement errors'); end end @@ -327,57 +313,57 @@ end % %% subfunctions: % -function fid = TeXBegin(directory,fname,fnum,title) +function fid = TeXBegin(directory, fname, fnum, title) TeXfile = [directory '/' fname '_Posterior_Mean_' int2str(fnum) '.tex']; fidTeX = fopen(TeXfile,'w'); -fprintf(fidTeX,'%% TeX-table generated by Dynare.\n'); -fprintf(fidTeX,['%% RESULTS FROM METROPOLIS HASTINGS (' title ')\n']); -fprintf(fidTeX,['%% ' datestr(now,0)]); -fprintf(fidTeX,' \n'); -fprintf(fidTeX,' \n'); -fprintf(fidTeX,'\\begin{center}\n'); -fprintf(fidTeX,'\\begin{longtable}{llcccccc} \n'); -fprintf(fidTeX,['\\caption{Results from Metropolis-Hastings (' title ')}\n ']); -fprintf(fidTeX,['\\label{Table:MHPosterior:' int2str(fnum) '}\\\\\n']); -fprintf(fidTeX,'\\toprule \n'); -fprintf(fidTeX,' & \\multicolumn{3}{c}{Prior} & \\multicolumn{4}{c}{Posterior} \\\\\n'); -fprintf(fidTeX,' \\cmidrule(r{.75em}){2-4} \\cmidrule(r{.75em}){5-8}\n'); -fprintf(fidTeX,' & Dist. & Mean & Stdev. & Mean & Stdev. & HPD inf & HPD sup\\\\\n'); -fprintf(fidTeX,'\\midrule \\endfirsthead \n'); -fprintf(fidTeX,['\\caption{(continued)}\\\\']); -fprintf(fidTeX,'\\toprule \n'); -fprintf(fidTeX,' & \\multicolumn{3}{c}{Prior} & \\multicolumn{4}{c}{Posterior} \\\\\n'); -fprintf(fidTeX,' \\cmidrule(r{.75em}){2-4} \\cmidrule(r{.75em}){5-8}\n'); -fprintf(fidTeX,' & Dist. & Mean & Stdev. & Mean & Stdev. & HPD inf & HPD sup\\\\\n'); -fprintf(fidTeX,'\\midrule \\endhead \n'); +fprintf(fidTeX, '%% TeX-table generated by Dynare.\n'); +fprintf(fidTeX, ['%% RESULTS FROM METROPOLIS HASTINGS (' title ')\n']); +fprintf(fidTeX, ['%% ' datestr(now, 0)]); +fprintf(fidTeX, ' \n'); +fprintf(fidTeX, ' \n'); +fprintf(fidTeX, '\\begin{center}\n'); +fprintf(fidTeX, '\\begin{longtable}{llcccccc} \n'); +fprintf(fidTeX, ['\\caption{Results from Metropolis-Hastings (' title ')}\n ']); +fprintf(fidTeX, ['\\label{Table:MHPosterior:' int2str(fnum) '}\\\\\n']); +fprintf(fidTeX, '\\toprule \n'); +fprintf(fidTeX, ' & \\multicolumn{3}{c}{Prior} & \\multicolumn{4}{c}{Posterior} \\\\\n'); +fprintf(fidTeX, ' \\cmidrule(r{.75em}){2-4} \\cmidrule(r{.75em}){5-8}\n'); +fprintf(fidTeX, ' & Dist. & Mean & Stdev. & Mean & Stdev. & HPD inf & HPD sup\\\\\n'); +fprintf(fidTeX, '\\midrule \\endfirsthead \n'); +fprintf(fidTeX, ['\\caption{(continued)}\\\\']); +fprintf(fidTeX, '\\toprule \n'); +fprintf(fidTeX, ' & \\multicolumn{3}{c}{Prior} & \\multicolumn{4}{c}{Posterior} \\\\\n'); +fprintf(fidTeX, ' \\cmidrule(r{.75em}){2-4} \\cmidrule(r{.75em}){5-8}\n'); +fprintf(fidTeX, ' & Dist. & Mean & Stdev. & Mean & Stdev. & HPD inf & HPD sup\\\\\n'); +fprintf(fidTeX, '\\midrule \\endhead \n'); -fprintf(fidTeX,'\\bottomrule \\multicolumn{8}{r}{(Continued on next page)} \\endfoot \n'); -fprintf(fidTeX,'\\bottomrule \\endlastfoot \n'); +fprintf(fidTeX, '\\bottomrule \\multicolumn{8}{r}{(Continued on next page)} \\endfoot \n'); +fprintf(fidTeX, '\\bottomrule \\endlastfoot \n'); fid = fidTeX; -function TeXCore(fid,name,shape,priormean,priorstd,postmean,poststd,hpd) +function TeXCore(fid, name, shape, priormean, priorstd, postmean, poststd, hpd) fprintf(fid,['$%s$ & %s & %7.3f & %6.4f & %7.3f& %6.4f & %7.4f & %7.4f \\\\ \n'],... - name,... - shape,... - priormean,... - priorstd,... - postmean,... - poststd,... - hpd(1),... + name, ... + shape, ... + priormean, ... + priorstd, ... + postmean, ... + poststd, ... + hpd(1), ... hpd(2)); -function TeXEnd(fid,fnum,title) -fprintf(fid,'\\end{longtable}\n '); -fprintf(fid,'\\end{center}\n'); -fprintf(fid,'%% End of TeX file.\n'); +function TeXEnd(fid, fnum, title) +fprintf(fid, '\\end{longtable}\n '); +fprintf(fid, '\\end{center}\n'); +fprintf(fid, '%% End of TeX file.\n'); fclose(fid); -function oo = Filloo(oo,name,type,postmean,hpdinterval,postmedian,postvar,postdecile,density) +function oo = Filloo(oo, name, type, postmean, hpdinterval, postmedian, postvar, postdecile, density) oo.posterior_mean.(type).(name) = postmean; oo.posterior_hpdinf.(type).(name) = hpdinterval(1); oo.posterior_hpdsup.(type).(name) = hpdinterval(2); @@ -387,7 +373,7 @@ oo.posterior_std.(type).(name) = sqrt(postvar); oo.posterior_deciles.(type).(name) = postdecile; oo.posterior_density.(type).(name) = density; -function [post_mean,hpd_interval,post_var] = Extractoo(oo,name,type) +function [post_mean,hpd_interval,post_var] = Extractoo(oo, name, type) hpd_interval = zeros(2,1); post_mean = oo.posterior_mean.(type).(name); hpd_interval(1) = oo.posterior_hpdinf.(type).(name); diff --git a/matlab/PlotPosteriorDistributions.m b/matlab/PlotPosteriorDistributions.m index 84ff775ea..99b81a01b 100644 --- a/matlab/PlotPosteriorDistributions.m +++ b/matlab/PlotPosteriorDistributions.m @@ -16,7 +16,7 @@ function oo_ = PlotPosteriorDistributions(estim_params_, M_, options_, bayestopt % SPECIAL REQUIREMENTS % none -% Copyright (C) 2005-2017 Dynare Team +% Copyright (C) 2005-2018 Dynare Team % % This file is part of Dynare. % @@ -63,24 +63,24 @@ for i=1:npar subplotnum = subplotnum+1; if subplotnum == 1 figunumber = figunumber+1; - hfig=dyn_figure(options_.nodisplay,'Name',figurename); + hfig=dyn_figure(options_.nodisplay, 'Name', figurename); end - [nam,texnam] = get_the_name(i,TeX,M_,estim_params_,options_); + [nam,texnam] = get_the_name(i, TeX, M_, estim_params_, options_); if subplotnum == 1 - NAMES = nam; + NAMES = {nam}; if TeX - TeXNAMES = texnam; + TeXNAMES = {texnam}; end else - NAMES = char(NAMES,nam); + NAMES = [NAMES; {nam}]; if TeX - TeXNAMES = char(TeXNAMES,texnam); + TeXNAMES = [TeXNAMES; {texnam}]; end end - [x2,f2,abscissa,dens,binf2,bsup2] = draw_prior_density(i,bayestopt_); + [x2, f2, abscissa, dens, binf2, bsup2] = draw_prior_density(i, bayestopt_); top2 = max(f2); if i <= nvx - name = deblank(M_.exo_names(estim_params_.var_exo(i,1),:)); + name = M_.exo_names{estim_params_.var_exo(i,1)}; x1 = oo_.posterior_density.shocks_std.(name)(:,1); f1 = oo_.posterior_density.shocks_std.(name)(:,2); oo_.prior_density.shocks_std.(name)(:,1) = x2; @@ -101,7 +101,7 @@ for i=1:npar j = i - (nvx+nvn); k1 = estim_params_.corrx(j,1); k2 = estim_params_.corrx(j,2); - name = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; + name = sprintf('%s_%s', M_.exo_names{k1}, M_.exo_names{k2}); x1 = oo_.posterior_density.shocks_corr.(name)(:,1); f1 = oo_.posterior_density.shocks_corr.(name)(:,2); oo_.prior_density.shocks_corr.(name)(:,1) = x2; @@ -113,7 +113,7 @@ for i=1:npar j = i - (nvx+nvn+ncx); k1 = estim_params_.corrn(j,1); k2 = estim_params_.corrn(j,2); - name = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; + name = sprintf('%s_%s', M_.endo_names{k1}, M_.endo_names{k2}); x1 = oo_.posterior_density.measurement_errors_corr.(name)(:,1); f1 = oo_.posterior_density.measurement_errors_corr.(name)(:,2); oo_.prior_density.measurement_errors_corr.(name)(:,1) = x2; @@ -123,7 +123,7 @@ for i=1:npar end else j = i - (nvx+nvn+ncx+ncn); - name = deblank(M_.param_names(estim_params_.param_vals(j,1),:)); + name = M_.param_names{estim_params_.param_vals(j,1)}; x1 = oo_.posterior_density.parameters.(name)(:,1); f1 = oo_.posterior_density.parameters.(name)(:,2); oo_.prior_density.parameters.(name)(:,1) = x2; @@ -133,35 +133,36 @@ for i=1:npar end end top1 = max(f1); - top0 = max([top1;top2]); + top0 = max([top1; top2]); binf1 = x1(1); bsup1 = x1(end); - borneinf = min(binf1,binf2); - bornesup = max(bsup1,bsup2); - subplot(nn,nn,subplotnum) - hh = plot(x2,f2,'-k','linewidth',2); - set(hh,'color',[0.7 0.7 0.7]); + borneinf = min(binf1, binf2); + bornesup = max(bsup1, bsup2); + subplot(nn, nn, subplotnum) + hh = plot(x2, f2, '-k', 'linewidth', 2); + set(hh, 'color', [0.7 0.7 0.7]); hold on; - plot(x1,f1,'-k','linewidth',2); + plot(x1, f1, '-k', 'linewidth', 2); if ~options_.mh_posterior_mode_estimation - plot( [pmod pmod], [0.0 1.1*top0], '--g', 'linewidth', 2); + plot([pmod pmod], [0.0 1.1*top0], '--g', 'linewidth', 2); end - box on; - axis([borneinf bornesup 0 1.1*top0]); - title(nam,'Interpreter','none'); - hold off; + box on + axis([borneinf bornesup 0 1.1*top0]) + title(nam, 'Interpreter', 'none') + hold off drawnow if subplotnum == MaxNumberOfPlotPerFigure || i == npar - dyn_saveas(hfig,[OutputDirectoryName '/' M_.fname '_PriorsAndPosteriors' int2str(figunumber)],options_.nodisplay,options_.graph_format); - if TeX && any(strcmp('eps',cellstr(options_.graph_format))) - fprintf(fidTeX,'\\begin{figure}[H]\n'); - for j = 1:size(NAMES,1) - fprintf(fidTeX,'\\psfrag{%s}[1][][0.5][0]{%s}\n',deblank(NAMES(j,:)),deblank(TeXNAMES(j,:))); + dyn_saveas(hfig,[OutputDirectoryName '/' M_.fname '_PriorsAndPosteriors' int2str(figunumber)], options_.nodisplay, options_.graph_format); + if TeX && any(strcmp('eps', cellstr(options_.graph_format))) + fprintf(fidTeX, '\\begin{figure}[H]\n'); + for j = 1:size(NAMES, 1) + fprintf(fidTeX, '\\psfrag{%s}[1][][0.5][0]{%s}\n', NAMES{j}, TeXNAMES{j}); end - fprintf(fidTeX,'\\centering\n'); - fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s/%s_PriorsAndPosteriors%s}\n',options_.figures.textwidth*min(subplotnum/nn,1),OutputDirectoryName,M_.fname,int2str(figunumber)); + fprintf(fidTeX, '\\centering\n'); + fprintf(fidTeX, '\\includegraphics[width=%2.2f\\textwidth]{%s/%s_PriorsAndPosteriors%s}\n', ... + options_.figures.textwidth*min(subplotnum/nn,1), OutputDirectoryName, M_.fname, int2str(figunumber)); fprintf(fidTeX,'\\caption{Priors and posteriors.}'); - fprintf(fidTeX,'\\label{Fig:PriorsAndPosteriors:%s}\n',int2str(figunumber)); + fprintf(fidTeX,'\\label{Fig:PriorsAndPosteriors:%s}\n', int2str(figunumber)); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); if i == npar diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m index 476b721b6..d77eab871 100644 --- a/matlab/PosteriorIRF.m +++ b/matlab/PosteriorIRF.m @@ -16,7 +16,7 @@ function PosteriorIRF(type) % functions associated with it(the _core1 and _core2). % See also the comments posterior_sampler.m funtion. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -43,17 +43,17 @@ end % Set varlist if necessary varlist = options_.varlist; if isempty(varlist) - varlist = char(options_.varobs); + varlist = options_.varobs; end options_.varlist = varlist; -nvar = size(varlist,1); +nvar = length(varlist); IndxVariables = []; for i=1:nvar - idx = strmatch(deblank(varlist(i,:)),M_.endo_names,'exact'); + idx = strmatch(varlist{i}, M_.endo_names, 'exact'); if isempty(idx) - disp(['PosteriorIRF :: ' deblank(varlist(i,:)) 'is not a declared endogenous variable!']) + disp(['PosteriorIRF :: ' varlist{i} 'is not a declared endogenous variable!']) else - IndxVariables = [IndxVariables,idx]; + IndxVariables = [IndxVariables, idx]; end end @@ -281,17 +281,14 @@ DistribIRF = zeros(options_.irf,9,nvar,M_.exo_nbr); HPDIRF = zeros(options_.irf,2,nvar,M_.exo_nbr); if options_.TeX + varlist_TeX = cell(nvar, 1); for i=1:nvar - if i==1 - varlist_TeX = M_.endo_names_tex(IndxVariables(i),:); - else - varlist_TeX = char(varlist_TeX,M_.endo_names_tex(IndxVariables(i),:)); - end + varlist_TeX(i) = {M_.endo_names_tex{IndxVariables(i)}}; end end fprintf('Estimation::mcmc: Posterior (dsge) IRFs...\n'); -tit(M_.exo_names_orig_ord,:) = M_.exo_names; +tit(M_.exo_names_orig_ord) = M_.exo_names; kdx = 0; for file = 1:NumberOfIRFfiles_dsge @@ -313,7 +310,7 @@ clear STOCK_IRF_DSGE; for i = irf_shocks_indx for j = 1:nvar - name = [deblank(M_.endo_names(IndxVariables(j),:)) '_' deblank(tit(i,:))]; + name = sprintf('%s_%s', M_.endo_names{IndxVariables(j)}, tit{i}); oo_.PosteriorIRF.dsge.Mean.(name) = MeanIRF(:,j,i); oo_.PosteriorIRF.dsge.Median.(name) = MedianIRF(:,j,i); oo_.PosteriorIRF.dsge.Var.(name) = VarIRF(:,j,i); @@ -331,7 +328,7 @@ if MAX_nirfs_dsgevar DistribIRFdsgevar = zeros(options_.irf,9,nvar,M_.exo_nbr); HPDIRFdsgevar = zeros(options_.irf,2,nvar,M_.exo_nbr); fprintf('Estimation::mcmc: Posterior (bvar-dsge) IRFs...\n'); - tit(M_.exo_names_orig_ord,:) = M_.exo_names; + tit(M_.exo_names_orig_ord) = M_.exo_names; kdx = 0; for file = 1:NumberOfIRFfiles_dsgevar load([MhDirectoryName filesep M_.fname '_IRF_BVARDSGEs' int2str(file) '.mat']); @@ -350,7 +347,7 @@ if MAX_nirfs_dsgevar clear STOCK_IRF_BVARDSGE; for i = irf_shocks_indx for j = 1:nvar - name = [deblank(M_.endo_names(IndxVariables(j),:)) '_' deblank(tit(i,:))]; + name = sprintf('%s_%s', M_.endo_names{IndxVariables(j)}, tit{i}); oo_.PosteriorIRF.bvardsge.Mean.(name) = MeanIRFdsgevar(:,j,i); oo_.PosteriorIRF.bvardsge.Median.(name) = MedianIRFdsgevar(:,j,i); oo_.PosteriorIRF.bvardsge.Var.(name) = VarIRFdsgevar(:,j,i); @@ -396,13 +393,13 @@ if ~options_.nograph && ~options_.no_graph.posterior % The files .TeX are generated in sequential way always! subplotnum = 0; - tit_TeX(M_.exo_names_orig_ord,:) = M_.exo_names_tex; + titTeX(M_.exo_names_orig_ord) = M_.exo_names_tex; if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format))) fidTeX = fopen([DirectoryName filesep M_.fname '_BayesianIRF.tex'],'w'); fprintf(fidTeX,'%% TeX eps-loader file generated by PosteriorIRF.m (Dynare).\n'); fprintf(fidTeX,['%% ' datestr(now,0) '\n']); fprintf(fidTeX,' \n'); - titTeX(M_.exo_names_orig_ord,:) = M_.exo_names_tex; + titTeX(M_.exo_names_orig_ord) = M_.exo_names_tex; for ii=irf_shocks_indx figunumber = 0; @@ -414,24 +411,23 @@ if ~options_.nograph && ~options_.no_graph.posterior if subplotnum == 1 fprintf(fidTeX,'\\begin{figure}[H]\n'); end - name = deblank(varlist(jj,:)); - texname = deblank(varlist_TeX(jj,:)); + name = varlist{jj}; + texname = varlist_TeX{jj}; fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],name,['$' texname '$']); end if subplotnum == MaxNumberOfPlotPerFigure || (jj == nvar && subplotnum> 0) figunumber = figunumber+1; fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s/%s_Bayesian_IRF_%s_%d}\n',options_.figures.textwidth*min(subplotnum/nn,1),DirectoryName,M_.fname,deblank(tit(ii,:)),figunumber); + fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s/%s_Bayesian_IRF_%s_%d}\n',options_.figures.textwidth*min(subplotnum/nn,1),DirectoryName,M_.fname,tit{ii},figunumber); if options_.relative_irf fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']); else - fprintf(fidTeX,'\\caption{Bayesian IRF: Orthogonalized shock to $%s$.}\n',deblank(tit_TeX(ii,:))); + fprintf(fidTeX,'\\caption{Bayesian IRF: Orthogonalized shock to $%s$.}\n',titTeX{ii}); end - fprintf(fidTeX,'\\label{Fig:BayesianIRF:%s:%d}\n',deblank(tit(ii,:)),figunumber); + fprintf(fidTeX,'\\label{Fig:BayesianIRF:%s:%d}\n', tit{ii},figunumber); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); - subplotnum = 0; end end @@ -445,7 +441,7 @@ if ~options_.nograph && ~options_.no_graph.posterior % Comment for testing! if ~isoctave - if isnumeric(options_.parallel) || (M_.exo_nbr*ceil(size(varlist,1)/MaxNumberOfPlotPerFigure))<8 + if isnumeric(options_.parallel) || (M_.exo_nbr*ceil(length(varlist)/MaxNumberOfPlotPerFigure))<8 [fout] = PosteriorIRF_core2(localVars,1,M_.exo_nbr,0); else isRemoteOctave = 0; diff --git a/matlab/PosteriorIRF_core1.m b/matlab/PosteriorIRF_core1.m index 2f5a931c4..fb909f889 100644 --- a/matlab/PosteriorIRF_core1.m +++ b/matlab/PosteriorIRF_core1.m @@ -23,7 +23,7 @@ function myoutput=PosteriorIRF_core1(myinputs,fpar,B,whoiam, ThisMatlab) % SPECIAL REQUIREMENTS. % None. % -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -195,7 +195,7 @@ while fpar= options_.impulse_responses.plot_threshold subplotnum = subplotnum+1; if subplotnum == 1 && options_.relative_irf - hh = dyn_figure(options_.nodisplay,'Name',['Relative response to orthogonalized shock to ' tit(i,:)]); + hh = dyn_figure(options_.nodisplay,'Name',['Relative response to orthogonalized shock to ' tit{i}]); elseif subplotnum == 1 && ~options_.relative_irf - hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to ' tit(i,:)]); + hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to ' tit{i}]); end set(0,'CurrentFigure',hh) @@ -142,17 +142,17 @@ for i=fpar:npar remove_fractional_xticks; hold off end - name = deblank(varlist(j,:)); + name = varlist{j}; title(name,'Interpreter','none') else if options_.debug - fprintf('POSTERIOR_IRF: The IRF of %s to %s is smaller than the irf_plot_threshold of %4.3f and will not be displayed.\n',deblank(varlist(j,:)),tit(i,:),options_.impulse_responses.plot_threshold) + fprintf('POSTERIOR_IRF: The IRF of %s to %s is smaller than the irf_plot_threshold of %4.3f and will not be displayed.\n',varlist{j},tit{i},options_.impulse_responses.plot_threshold) end end if subplotnum == MaxNumberOfPlotPerFigure || (j == nvar && subplotnum> 0) figunumber = figunumber+1; - dyn_saveas(hh,[DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:)) '_' int2str(figunumber)],options_.nodisplay,options_.graph_format); + dyn_saveas(hh,[DirectoryName '/' M_.fname '_Bayesian_IRF_' tit{i} '_' int2str(figunumber)],options_.nodisplay,options_.graph_format); if RemoteFlag==1 OutputFileName = [OutputFileName; {[DirectoryName,filesep], [M_.fname '_Bayesian_IRF_' deblank(tit(i,:)) '_' int2str(figunumber) '.*']}]; end diff --git a/matlab/UnivariateSpectralDensity.m b/matlab/UnivariateSpectralDensity.m index 41b67c403..5895c02e0 100644 --- a/matlab/UnivariateSpectralDensity.m +++ b/matlab/UnivariateSpectralDensity.m @@ -19,7 +19,7 @@ function [oo_] = UnivariateSpectralDensity(M_,oo_,options_,var_list) % Adapted from th_autocovariances.m. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -50,15 +50,15 @@ else warning off MATLAB:dividebyzero end if nargin<2 - var_list = []; + var_list = {}; end -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr, :); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -nvar = size(var_list,1); +nvar = length(var_list); ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) error (['One of the variables specified does not exist']) ; else @@ -159,12 +159,12 @@ if options_.nograph == 0 end for i= 1:nvar - hh = dyn_figure(options_.nodisplay,'Name',['Spectral Density of ' deblank(M_.endo_names(ivar(i),:)) '.']); + hh = dyn_figure(options_.nodisplay,'Name',['Spectral Density of ' M_.endo_names{ivar(i)} '.']); plot(freqs,f(i,:),'-k','linewidth',2) xlabel('0 \leq \omega \leq \pi') ylabel('f(\omega)') box on axis tight - dyn_saveas(hh,[M_.fname ,filesep,'graphs', filesep, 'SpectralDensity_' deblank(M_.endo_names(ivar(i),:))],options_.nodisplay,options_.graph_format) + dyn_saveas(hh,[M_.fname ,filesep,'graphs', filesep, 'SpectralDensity_' M_.endo_names{ivar(i)}],options_.nodisplay,options_.graph_format) end end diff --git a/matlab/WriteShockDecomp2Excel.m b/matlab/WriteShockDecomp2Excel.m index 5417e5250..d0ecd7cc4 100644 --- a/matlab/WriteShockDecomp2Excel.m +++ b/matlab/WriteShockDecomp2Excel.m @@ -11,7 +11,7 @@ function WriteShockDecomp2Excel(z,shock_names,endo_names,i_var,initial_date,Dyna % DynareModel [structure] Dynare model structure % DynareOptions [structure] Dynare options structure -% Copyright (C) 2016-2017 Dynare Team +% Copyright (C) 2016-2018 Dynare Team % % This file is part of Dynare. % @@ -94,7 +94,7 @@ for j=1:nvar z1 = squeeze(z(i_var(j),:,:)); if screen_shocks [junk, isort] = sort(mean(abs(z1(1:end-2,:)')), 'descend'); - labels = char(char(shock_names(isort(1:16),:)),'Others', 'Initial values'); + labels = char(char(shock_names(isort(1:16))),'Others', 'Initial values'); zres = sum(z1(isort(17:end),:),1); z1 = [z1(isort(1:16),:); zres; z1(comp_nbr0:end,:)]; comp_nbr=18; @@ -115,9 +115,9 @@ for j=1:nvar warning off if ~ismac - [STATUS,MESSAGE] = xlswrite([DynareModel.fname,'_shock_decomposition',fig_mode,fig_name1],d0,deblank(endo_names(i_var(j),:))); + [STATUS,MESSAGE] = xlswrite([DynareModel.fname,'_shock_decomposition',fig_mode,fig_name1],d0,endo_names{i_var(j)}); else - [STATUS] = xlwrite([DynareModel.fname,'_shock_decomposition',fig_mode,fig_name1],d0,deblank(endo_names(i_var(j),:))); + [STATUS] = xlwrite([DynareModel.fname,'_shock_decomposition',fig_mode,fig_name1],d0,endo_names{i_var(j)}); end warning on diff --git a/matlab/annualized_shock_decomposition.m b/matlab/annualized_shock_decomposition.m index 4972edb30..b92ec5afa 100644 --- a/matlab/annualized_shock_decomposition.m +++ b/matlab/annualized_shock_decomposition.m @@ -32,7 +32,7 @@ function [z, endo_names, endo_names_tex, steady_state, i_var, oo_] = annualized_ % SPECIAL REQUIREMENTS % none -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2018 Dynare Team % % This file is part of Dynare. % @@ -109,17 +109,15 @@ elseif mytype gtex = 'g'; end steady_state=steady_state(i_var); -% endo_names = M_.endo_names(i_var,:); -% endo_names_tex = M_.endo_names_tex(i_var,:); nterms = size(z,2); nfrcst = opts.forecast/4; for j=1:nvar if j>1 - endo_names = char(endo_names,[deblank(M_.endo_names(i_var(j),:)) '_A']); - endo_names_tex = char(endo_names_tex,['{' deblank(M_.endo_names_tex(i_var(j),:)) '}^A']); - gendo_names = char(gendo_names,[gtxt endo_names(j,:)]); - gendo_names_tex = char(gendo_names_tex,[gtex '(' deblank(endo_names_tex(j,:)) ')']); + endo_names = char(endo_names, sprintf('%s_A', M_.endo_names{i_var(j)})); + endo_names_tex = char(endo_names_tex, sprintf('{%s}^A', M_.endo_names_tex{i_var(j)})); + gendo_names = char(gendo_names,[gtxt endo_names{j}]); + gendo_names_tex = char(gendo_names_tex,[gtex '(' endo_names_tex{j} ')']); else if nvar==1 && ~mytype endo_names = mytxt; @@ -127,10 +125,10 @@ for j=1:nvar gendo_names = gtxt; gendo_names_tex = gtex; else - endo_names = [deblank(M_.endo_names(i_var(j),:)) '_A']; - endo_names_tex = ['{' deblank(M_.endo_names_tex(i_var(j),:)) '}^A']; - gendo_names = [gtxt endo_names(j,:)]; - gendo_names_tex = [gtex '(' deblank(endo_names_tex(j,:)) ')']; + endo_names = sprintf('%s_A', M_.endo_names{i_var(j)}); + endo_names_tex = sprintf('{%s}^A', M_.endo_names_tex{i_var(j)}); + gendo_names = [gtxt endo_names{j}]; + gendo_names_tex = [gtex '(' endo_names_tex{j} ')']; end end for k =1:nterms @@ -331,3 +329,6 @@ else steady_state = steady_state_a; end end + +endo_names = cellstr(endo_names); +endo_names_tex = cellstr(endo_names_tex); \ No newline at end of file diff --git a/matlab/backward/backward_model_forecast.m b/matlab/backward/backward_model_forecast.m index 64c808134..d3c7c6bb5 100644 --- a/matlab/backward/backward_model_forecast.m +++ b/matlab/backward/backward_model_forecast.m @@ -10,7 +10,7 @@ function forecasts = backward_model_forecast(initialcondition, listofvariables, % OUTPUTS % - forecast [dseries] -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -39,7 +39,7 @@ forecasts = struct(); % Set defaults. if nargin<2 - listofvariables = cellstr(M_.endo_names); + listofvariables = M_.endo_names; periods = 8; withuncertainty = false; end diff --git a/matlab/backward/backward_model_irf.m b/matlab/backward/backward_model_irf.m index 5ec9cb12f..19b552aea 100644 --- a/matlab/backward/backward_model_irf.m +++ b/matlab/backward/backward_model_irf.m @@ -19,7 +19,7 @@ function [deviations, baseline, irfs] = backward_model_irf(initialcondition, inn % argument. % - If second argument is not empty, periods must not be greater than innovationbaseline.nobs. -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -72,7 +72,7 @@ else end if deterministicshockflag numberofexperiments = length(listofshocks); - exonames = cellstr(M_.exo_names); + exonames = M_.exo_names; initialconditionperiod = initialcondition.dates(end); for i=1:numberofexperiments shock = listofshocks{i}; @@ -108,7 +108,7 @@ if ~isempty(innovationbaseline) error('The second input argument must at least have %s observations or lower the number of periods.', periods) end % Fill innovations with provided paths for the innovations. - exonames = cellstr(M_.exo_names); + exonames = M_.exo_names; for i = 1:length(exonames) if ~isempty(strmatch(exonames{i}, innovationbaseline.name)) Innovations(:,i) = innovationbaseline{exonames{i}}.data(1:periods); @@ -183,9 +183,9 @@ for i=1:length(listofshocks) endo_simul__1 = feval(transform, ysim__1); end % Instantiate a dseries object (with all the endogenous variables) - alldeviations = dseries(transpose(endo_simul__1-endo_simul__0), initialcondition.init, endonames(1:M_.orig_endo_nbr), cellstr(DynareModel.endo_names_tex(1:M_.orig_endo_nbr,:))); + alldeviations = dseries(transpose(endo_simul__1-endo_simul__0), initialcondition.init, endonames(1:M_.orig_endo_nbr), DynareModel.endo_names_tex(1:M_.orig_endo_nbr)); if nargout>2 - allirfs = dseries(transpose(endo_simul__1), initialcondition.init, endonames(1:M_.orig_endo_nbr), cellstr(DynareModel.endo_names_tex(1:M_.orig_endo_nbr,:))); + allirfs = dseries(transpose(endo_simul__1), initialcondition.init, endonames(1:M_.orig_endo_nbr), DynareModel.endo_names_tex(1:M_.orig_endo_nbr)); end % Extract a sub-dseries object if deterministicshockflag @@ -201,6 +201,6 @@ for i=1:length(listofshocks) end if nargout>1 - baseline = dseries(transpose(endo_simul__0), initialcondition.init, endonames(1:M_.orig_endo_nbr), cellstr(DynareModel.endo_names_tex(1:M_.orig_endo_nbr,:))); + baseline = dseries(transpose(endo_simul__0), initialcondition.init, endonames(1:M_.orig_endo_nbr), DynareModel.endo_names_tex(1:M_.orig_endo_nbr)); baseline = [baseline, innovationbaseline]; end \ No newline at end of file diff --git a/matlab/backward/simul_backward_model.m b/matlab/backward/simul_backward_model.m index 44d61ef8d..e6942aef1 100644 --- a/matlab/backward/simul_backward_model.m +++ b/matlab/backward/simul_backward_model.m @@ -18,7 +18,7 @@ function simulation = simul_backward_model(initialconditions, samplesize, innova % [3] If the first input argument is empty, the endogenous variables are initialized with 0, or if available with the informations % provided thrtough the histval block. -% Copyright (C) 2012-2017 Dynare Team +% Copyright (C) 2012-2018 Dynare Team % % This file is part of Dynare. % @@ -47,7 +47,7 @@ else end % Set array holding innovations values. Innovations = zeros(samplesize, M_.exo_nbr); - exonames = cellstr(M_.exo_names); + exonames = M_.exo_names; for i=1:M_.exo_nbr if ismember(exonames{i}, innovations.name) Innovations(:,i) = innovations{exonames{i}}.data(1:samplesize); diff --git a/matlab/backward/simul_backward_model_init.m b/matlab/backward/simul_backward_model_init.m index 1e7dff7ad..d284438be 100644 --- a/matlab/backward/simul_backward_model_init.m +++ b/matlab/backward/simul_backward_model_init.m @@ -2,7 +2,7 @@ function [initialconditions, samplesize, innovations, DynareOptions, DynareModel % Initialization of the routines simulating backward models. -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -41,7 +41,7 @@ if ~isdseries(initialconditions) end % Test if the first argument contains all the lagged endogenous variables -endonames = cellstr(DynareModel.endo_names); +endonames = DynareModel.endo_names; missingendogenousvariables = setdiff(endonames, initialconditions.name); endolags = get_lags_on_endogenous_variables(DynareModel); endolags_ = endolags(find(endolags)); @@ -84,7 +84,7 @@ if missinginitialcondition end % If the model has lags on the exogenous variables, test if we have corresponding initial conditions. -exonames = cellstr(DynareModel.exo_names); +exonames = DynareModel.exo_names; missingexogenousvariables = setdiff(exonames, initialconditions.name); exolags = get_lags_on_exogenous_variables(DynareModel); exolags_ = exolags(find(exolags)); @@ -131,16 +131,16 @@ k = 0; for i = DynareModel.orig_endo_nbr+1:DynareModel.endo_nbr k = k+1; if DynareModel.aux_vars(k).type==1 - if ismember(deblank(DynareModel.endo_names(DynareModel.aux_vars(k).orig_index,:)), initialconditions.name) - initialconditions{deblank(DynareModel.endo_names(DynareModel.aux_vars(k).endo_index, :))} = ... - initialconditions{deblank(DynareModel.endo_names(DynareModel.aux_vars(k).orig_index, :))}.lag(abs(DynareModel.aux_vars(k).orig_lead_lag)); + if ismember(DynareModel.endo_names{DynareModel.aux_vars(k).orig_index}, initialconditions.name) + initialconditions{DynareModel.endo_names{DynareModel.aux_vars(k).endo_index}} = ... + initialconditions{DynareModel.endo_names{DynareModel.aux_vars(k).orig_index}}.lag(abs(DynareModel.aux_vars(k).orig_lead_lag)); else error('This is a bug. Please contact Dynare Team!'); end elseif DynareModel.aux_vars(k).type==3 - if ismember(deblank(DynareModel.exo_names(DynareModel.aux_vars(k).orig_index, :)), initialconditions.name) - initialconditions{deblank(DynareModel.endo_names(DynareModel.aux_vars(k).endo_index,:))} = ... - initialconditions{deblank(DynareModel.exo_names(DynareModel.aux_vars(k).orig_index, :))}.lag(abs(DynareModel.aux_vars(k).orig_lead_lag)); + if ismember(DynareModel.exo_names{DynareModel.aux_vars(k).orig_index}, initialconditions.name) + initialconditions{DynareModel.endo_names{DynareModel.aux_vars(k).endo_index}} = ... + initialconditions{DynareModel.exo_names{DynareModel.aux_vars(k).orig_index}}.lag(abs(DynareModel.aux_vars(k).orig_lead_lag)); else error('This is a bug. Please contact Dynare Team!'); end diff --git a/matlab/cellofchararraymaxlength.m b/matlab/cellofchararraymaxlength.m new file mode 100644 index 000000000..2fa7b95cf --- /dev/null +++ b/matlab/cellofchararraymaxlength.m @@ -0,0 +1,28 @@ +function n = cellofchararraymaxlength(c) + +% Copyright (C) 2018 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 . + +if ~all(cellfun(@ischar, c)) + error('Input has to be a cell of char arrays!') +end + +if ~all(cellfun(@isrow, c)) + error('Input has to be a cell of one dimensional char arrays!') +end + +n = max(cellfun(@length, c)); \ No newline at end of file diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m index 88312097a..332372665 100644 --- a/matlab/check_list_of_variables.m +++ b/matlab/check_list_of_variables.m @@ -5,16 +5,16 @@ function varlist = check_list_of_variables(options_, M_, varlist) % % INPUTS % -% options_ [structure] Dynare structure. -% M_ [structure] Dynare structure (related to model definition). -% varlist [string] Array of strings with name of the endogenous variables. +% options_ [structure] Dynare structure. +% M_ [structure] Dynare structure (related to model definition). +% varlist [cell of char arrays] Array of strings with name of the endogenous variables. % % OUTPUTS -% varlist [string] +% varlist [cell of char arrays] % % SPECIAL REQUIREMENTS -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -33,21 +33,21 @@ function varlist = check_list_of_variables(options_, M_, varlist) %get uniques -[junk1,junk2,index_uniques] = varlist_indices(varlist,M_.endo_names); -varlist=varlist(index_uniques,:); +[junk1, junk2, index_uniques] = varlist_indices(varlist, M_.endo_names); +varlist = varlist(index_uniques); -msg = 0; +msg = false; if options_.dsge_var && options_.bayesian_irf if ~isempty(varlist) for i=1:size(varlist,1) - idx = strmatch(deblank(varlist(i,:)),options_.varobs,'exact'); + idx = strmatch(varlist{i}, options_.varobs, 'exact'); if isempty(idx) - disp([varlist(i,:) ' is not an observed variable!']); - msg = 1; + disp(sprintf('%s is not an observed variable!', varlist{i})) + msg = true; end end - if size(varlist,1)~=length(options_.varobs) - msg = 1; + if ~isequal(size(varlist), length(options_.varobs)) + msg = true; end if msg skipline() @@ -55,7 +55,7 @@ if options_.dsge_var && options_.bayesian_irf skipline() end end - varlist = char(options_.varobs); + varlist = options_.varobs; return end @@ -63,16 +63,16 @@ if ~isempty(varlist) && ~isempty(options_.endo_vars_for_moment_computations_in_e error('You cannot use the consider_all_endogenous or consider_all_observed options when listing variables after the estimation command') elseif isempty(varlist) && ~isempty(options_.endo_vars_for_moment_computations_in_estimation) if strcmp(options_.endo_vars_for_moment_computations_in_estimation,'all_endogenous_variables') - varlist = M_.endo_names(1:M_.orig_endo_nbr, :); + varlist = M_.endo_names(1:M_.orig_endo_nbr); elseif strcmp(options_.endo_vars_for_moment_computations_in_estimation,'only_observed_variables') - varlist = char(options_.varobs'); + varlist = options_.varobs; else error('Unknown option') end elseif isempty(varlist) && isempty(options_.endo_vars_for_moment_computations_in_estimation) skipline() disp(['You did not declare endogenous variables after the estimation/calib_smoother command.']) - cas = []; + cas = ''; if options_.bayesian_irf cas = 'Posterior IRFs'; end @@ -80,37 +80,37 @@ elseif isempty(varlist) && isempty(options_.endo_vars_for_moment_computations_in if isempty(cas) cas = 'Posterior moments'; else - cas = [ cas , ', posterior moments']; + cas = [cas, ', posterior moments']; end end if options_.smoother if isempty(cas) cas = 'Smoothed variables'; else - cas = [ cas , ', smoothed variables']; + cas = [cas, ', smoothed variables']; end end if ~isempty(options_.filter_step_ahead) if isempty(cas) cas = 'k-step ahead filtered variables'; else - cas = [ cas , ', k-step ahead filtered variables']; + cas = [cas, ', k-step ahead filtered variables']; end end if options_.forecast if isempty(cas) cas = 'Forecasts'; else - cas = [ cas , ' and forecasts']; + cas = [cas, ' and forecasts']; end end if ~isempty(cas) - string = [ cas , ' will be computed for the ' num2str(M_.endo_nbr) ' endogenous variables']; - string = [ string ' of your model, this can take a long time ....']; - format_text(string, 10) + str = sprintf('%s will be computed for the %s endogenous variables of your model', cas, num2str(M_.orig_endo_nbr)); + str = sprintf('%s, this can take a long time ....', str); + format_text(str, 10) if options_.nointeractive % Default behaviour is to consider all the endogenous variables. - varlist = M_.endo_names(1:M_.orig_endo_nbr, :); + varlist = M_.endo_names(1:M_.orig_endo_nbr); else choice = []; while isempty(choice) @@ -126,9 +126,9 @@ elseif isempty(varlist) && isempty(options_.endo_vars_for_moment_computations_in choice=1; end if choice==1 - varlist = M_.endo_names(1:M_.orig_endo_nbr, :); + varlist = M_.endo_names(1:M_.orig_endo_nbr); elseif choice==2 - varlist = char(options_.varobs); + varlist = options_.varobs; elseif choice==3 varlist = NaN; else diff --git a/matlab/compute_moments_varendo.m b/matlab/compute_moments_varendo.m index fd2203e3f..188566d99 100644 --- a/matlab/compute_moments_varendo.m +++ b/matlab/compute_moments_varendo.m @@ -1,14 +1,15 @@ -function oo_ = compute_moments_varendo(type,options_,M_,oo_,var_list_) +function oo_ = compute_moments_varendo(type, options_, M_, oo_, var_list_) + % Computes the second order moments (autocorrelation function, covariance % matrix and variance decomposition) distributions for all the endogenous variables selected in % var_list_. The results are saved in oo_ % % INPUTS: -% type [string] 'posterior' or 'prior' -% options_ [structure] Dynare structure. -% M_ [structure] Dynare structure (related to model definition). -% oo_ [structure] Dynare structure (results). -% var_list_ [string] Array of string with endogenous variable names. +% type [string] 'posterior' or 'prior' +% options_ [structure] Dynare structure. +% M_ [structure] Dynare structure (related to model definition). +% oo_ [structure] Dynare structure (results). +% var_list_ [cell of char arrays] Endogenous variable names. % % OUTPUTS % oo_ [structure] Dynare structure (results). @@ -16,7 +17,7 @@ function oo_ = compute_moments_varendo(type,options_,M_,oo_,var_list_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -39,21 +40,21 @@ fprintf('Estimation::compute_moments_varendo: I''m computing endogenous moments if strcmpi(type,'posterior') posterior = 1; if nargin==4 - var_list_ = char(options_.varobs); + var_list_ = options_.varobs; end elseif strcmpi(type,'prior') posterior = 0; if nargin==4 var_list_ = options_.prior_analysis_endo_var_list; if isempty(var_list_) - options_.prior_analysis_var_list = char(options_.varobs); + options_.prior_analysis_var_list = options_.varobs; end end else error('compute_moments_varendo:: Unknown type!') end -NumberOfEndogenousVariables = rows(var_list_); +NumberOfEndogenousVariables = length(var_list_); NumberOfExogenousVariables = M_.exo_nbr; NumberOfLags = options_.ar; NoDecomposition = options_.nodecomposition; @@ -64,9 +65,9 @@ else end if options_.TeX - var_list_tex=''; - for var_iter=1:size(var_list_,1) - var_list_tex=strvcat(var_list_tex,M_.endo_names_tex(strmatch(var_list_(var_iter,:),M_.endo_names,'exact'),:)); + var_list_tex={}; + for var_iter = 1:length(var_list_) + var_list_tex = vertcat(var_list_tex, M_.endo_names_tex{strmatch(var_list_{var_iter}, M_.endo_names, 'exact')}); end end @@ -74,22 +75,23 @@ end if posterior for i=1:NumberOfEndogenousVariables for j=i:NumberOfEndogenousVariables - oo_ = posterior_analysis('variance',var_list_(i,:),var_list_(j,:),[],options_,M_,oo_); + oo_ = posterior_analysis('variance', var_list_{i}, var_list_{j}, [], options_, M_, oo_); end end else for i=1:NumberOfEndogenousVariables for j=i:NumberOfEndogenousVariables - oo_ = prior_analysis('variance',var_list_(i,:),var_list_(j,:),[],options_,M_,oo_); + oo_ = prior_analysis('variance', var_list_{i}, var_list_{j}, [], options_, M_, oo_); end end end + % CORRELATION FUNCTION. if posterior for h=NumberOfLags:-1:1 for i=1:NumberOfEndogenousVariables for j=1:NumberOfEndogenousVariables - oo_ = posterior_analysis('correlation',var_list_(i,:),var_list_(j,:),h,options_,M_,oo_); + oo_ = posterior_analysis('correlation', var_list_{i}, var_list_{j}, h, options_, M_, oo_); end end end @@ -97,11 +99,12 @@ else for h=NumberOfLags:-1:1 for i=1:NumberOfEndogenousVariables for j=1:NumberOfEndogenousVariables - oo_ = prior_analysis('correlation',var_list_(i,:),var_list_(j,:),h,options_,M_,oo_); + oo_ = prior_analysis('correlation', var_list_{i}, var_list_{j}, h, options_, M_, oo_); end end end end + % VARIANCE DECOMPOSITION. if M_.exo_nbr > 1 if ~NoDecomposition @@ -109,8 +112,8 @@ if M_.exo_nbr > 1 if posterior for i=1:NumberOfEndogenousVariables for j=1:NumberOfExogenousVariables - oo_ = posterior_analysis('decomposition',var_list_(i,:),M_.exo_names(j,:),[],options_,M_,oo_); - temp(i,j)=oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.Mean.(deblank(var_list_(i,:))).(deblank(M_.exo_names(j,:))); + oo_ = posterior_analysis('decomposition', var_list_{i}, M_.exo_names{j}, [], options_, M_, oo_); + temp(i,j) = oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.Mean.(var_list_{i}).(M_.exo_names{j}); end end title='Posterior mean variance decomposition (in percent)'; @@ -118,160 +121,157 @@ if M_.exo_nbr > 1 else for i=1:NumberOfEndogenousVariables for j=1:NumberOfExogenousVariables - oo_ = prior_analysis('decomposition',var_list_(i,:),M_.exo_names(j,:),[],options_,M_,oo_); - temp(i,j)=oo_.PriorTheoreticalMoments.dsge.VarianceDecomposition.Mean.(deblank(var_list_(i,:))).(deblank(M_.exo_names(j,:))); + oo_ = prior_analysis('decomposition', var_list_{i}, M_.exo_names{j}, [], options_, M_, oo_); + temp(i,j)=oo_.PriorTheoreticalMoments.dsge.VarianceDecomposition.Mean.(var_list_{i}).(M_.exo_names{j}); end end title='Prior mean variance decomposition (in percent)'; save_name_string='dsge_prior_mean_var_decomp_uncond'; end - title=add_filter_subtitle(title,options_); + title=add_filter_subtitle(title, options_); headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers); - lh = size(deblank(var_list_),2)+2; - dyntable(options_,title,headers,deblank(var_list_),100* ... - temp,lh,8,2); + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(' ', headers); + lh = cellofchararraymaxlength(var_list_)+2; + dyntable(options_, title, headers, var_list_, 100*temp, lh, 8, 2); if options_.TeX - headers=M_.exo_names_tex; - headers = char(' ',headers); - labels = deblank(var_list_tex); + headers = M_.exo_names_tex; + headers = vertcat(' ', headers); + labels = var_list_tex; lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,save_name_string,headers,labels,100*temp,lh,8,2); + dyn_latex_table(M_, options_, title, save_name_string, headers, labels, 100*temp, lh, 8, 2); end skipline(); end skipline(); if ~all(M_.H==0) - [observable_name_requested_vars,varlist_pos]=intersect(var_list_,options_.varobs,'stable'); + [observable_name_requested_vars, varlist_pos] = intersect(var_list_, options_.varobs, 'stable'); if ~isempty(observable_name_requested_vars) - NumberOfObservedEndogenousVariables=length(observable_name_requested_vars); - temp=NaN(NumberOfObservedEndogenousVariables,NumberOfExogenousVariables+1); + NumberOfObservedEndogenousVariables = length(observable_name_requested_vars); + temp = NaN(NumberOfObservedEndogenousVariables, NumberOfExogenousVariables+1); if posterior for i=1:NumberOfObservedEndogenousVariables for j=1:NumberOfExogenousVariables - temp(i,j,:)=oo_.PosteriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(deblank(observable_name_requested_vars{i,1})).(deblank(M_.exo_names(j,:))); + temp(i,j,:) = oo_.PosteriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(observable_name_requested_vars{i}).(M_.exo_names{j}); end - endo_index_varlist=strmatch(deblank(observable_name_requested_vars{i,1}),var_list_,'exact'); - oo_ = posterior_analysis('decomposition',var_list_(endo_index_varlist,:),'ME',[],options_,M_,oo_); - temp(i,j+1,:)=oo_.PosteriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(deblank(observable_name_requested_vars{i,1})).('ME'); + endo_index_varlist = strmatch(observable_name_requested_vars{i}, var_list_, 'exact'); + oo_ = posterior_analysis('decomposition', var_list_{endo_index_varlist}, 'ME', [], options_, M_, oo_); + temp(i,j+1,:) = oo_.PosteriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(observable_name_requested_vars{i}).('ME'); end title='Posterior mean variance decomposition (in percent) with measurement error'; save_name_string='dsge_post_mean_var_decomp_uncond_ME'; else for i=1:NumberOfObservedEndogenousVariables for j=1:NumberOfExogenousVariables - temp(i,j,:)=oo_.PriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(deblank(observable_name_requested_vars(i,:))).(deblank(M_.exo_names(j,:))); + temp(i,j,:) = oo_.PriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(observable_name_requested_vars{i}).(M_.exo_names{j}); end - endo_index_varlist=strmatch(deblank(observable_name_requested_vars{i,1}),var_list_,'exact'); - oo_ = prior_analysis('decomposition',var_list_(endo_index_varlist,:),'ME',[],options_,M_,oo_); - temp(i,j+1,:)=oo_.PriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(deblank(observable_name_requested_vars{i,1})).('ME'); + endo_index_varlist = strmatch(observable_name_requested_vars{i}, var_list_, 'exact'); + oo_ = prior_analysis('decomposition', var_list_{endo_index_varlist}, 'ME', [], options_, M_, oo_); + temp(i,j+1,:) = oo_.PriorTheoreticalMoments.dsge.VarianceDecompositionME.Mean.(observable_name_requested_vars{i}).('ME'); end title='Prior mean variance decomposition (in percent) with measurement error'; save_name_string='dsge_prior_mean_var_decomp_uncond_ME'; end - title=add_filter_subtitle(title,options_); + title=add_filter_subtitle(title, options_); headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers,'ME'); - lh = size(deblank(var_list_),2)+2; - dyntable(options_,title,headers,deblank(char(observable_name_requested_vars)),100* ... - temp,lh,8,2); + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(' ', headers, 'ME'); + lh = cellofchararraymaxlength(var_list_)+2; + dyntable(options_, title, headers, observable_name_requested_vars,100*temp,lh,8,2); if options_.TeX - headers=M_.exo_names_tex; - headers = char(' ',headers,'ME'); - labels = deblank(var_list_tex(varlist_pos,:)); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,save_name_string,headers,labels,100*temp,lh,8,2); + headers = M_.exo_names_tex; + headers = vertcat(' ', headers, 'ME'); + labels = var_list_tex(varlist_pos); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, save_name_string, headers, labels, 100*temp, lh, 8, 2); end skipline(); end end -% CONDITIONAL VARIANCE DECOMPOSITION. + % CONDITIONAL VARIANCE DECOMPOSITION. if Steps - temp=NaN(NumberOfEndogenousVariables,NumberOfExogenousVariables,length(Steps)); + temp = NaN(NumberOfEndogenousVariables, NumberOfExogenousVariables, length(Steps)); if posterior for i=1:NumberOfEndogenousVariables for j=1:NumberOfExogenousVariables - oo_ = posterior_analysis('conditional decomposition',i,M_.exo_names(j,:),Steps,options_,M_,oo_); - temp(i,j,:)=oo_.PosteriorTheoreticalMoments.dsge.ConditionalVarianceDecomposition.Mean.(deblank(var_list_(i,:))).(deblank(M_.exo_names(j,:))); + oo_ = posterior_analysis('conditional decomposition', var_list_{i}, M_.exo_names{j}, Steps, options_, M_, oo_); + temp(i,j,:) = oo_.PosteriorTheoreticalMoments.dsge.ConditionalVarianceDecomposition.Mean.(var_list_{i}).(M_.exo_names{j}); end end - title='Posterior mean conditional variance decomposition (in percent)'; - save_name_string='dsge_post_mean_var_decomp_cond_h'; + title = 'Posterior mean conditional variance decomposition (in percent)'; + save_name_string = 'dsge_post_mean_var_decomp_cond_h'; else for i=1:NumberOfEndogenousVariables for j=1:NumberOfExogenousVariables - oo_ = prior_analysis('conditional decomposition',var_list_(i,:),M_.exo_names(j,:),Steps,options_,M_,oo_); - temp(i,j,:)=oo_.PriorTheoreticalMoments.dsge.ConditionalVarianceDecomposition.Mean.(deblank(var_list_(i,:))).(deblank(M_.exo_names(j,:))); + oo_ = prior_analysis('conditional decomposition', var_list_{i}, M_.exo_names{j}, Steps, options_, M_, oo_); + temp(i,j,:) = oo_.PriorTheoreticalMoments.dsge.ConditionalVarianceDecomposition.Mean.(var_list_{i}).(M_.exo_names{j}); end end - title='Prior mean conditional variance decomposition (in percent)'; - save_name_string='dsge_prior_mean_var_decomp_cond_h'; + title = 'Prior mean conditional variance decomposition (in percent)'; + save_name_string = 'dsge_prior_mean_var_decomp_cond_h'; end for step_iter=1:length(Steps) title_print=[title, ' Period ' int2str(Steps(step_iter))]; headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers); - lh = size(deblank(var_list_),2)+2; - dyntable(options_,title_print,headers,deblank(var_list_),100* ... + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(' ', headers); + lh = cellofchararraymaxlength(var_list_)+2; + dyntable(options_,title_print,headers, var_list_,100* ... temp(:,:,step_iter),lh,8,2); if options_.TeX - headers=M_.exo_names_tex; - headers = char(' ',headers); - labels = deblank(var_list_tex); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title_print,[save_name_string,int2str(Steps(step_iter))],headers,labels,100*temp(:,:,step_iter),lh,8,2); + headers = M_.exo_names_tex; + headers = vertcat(' ', headers); + labels = var_list_tex; + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title_print, [save_name_string, int2str(Steps(step_iter))], headers, labels, 100*temp(:,:,step_iter), lh, 8, 2); end end skipline(); if ~all(M_.H==0) if ~isempty(observable_name_requested_vars) - NumberOfObservedEndogenousVariables=length(observable_name_requested_vars); + NumberOfObservedEndogenousVariables = length(observable_name_requested_vars); temp=NaN(NumberOfObservedEndogenousVariables,NumberOfExogenousVariables+1,length(Steps)); if posterior for i=1:NumberOfObservedEndogenousVariables for j=1:NumberOfExogenousVariables - temp(i,j,:)=oo_.PosteriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(deblank(observable_name_requested_vars{i,1})).(deblank(M_.exo_names(j,:))); + temp(i,j,:) = oo_.PosteriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(observable_name_requested_vars{i}).(M_.exo_names{j}); end - endo_index_varlist=strmatch(deblank(observable_name_requested_vars{i,1}),var_list_,'exact'); - oo_ = posterior_analysis('conditional decomposition',endo_index_varlist,'ME',Steps,options_,M_,oo_); - temp(i,j+1,:)=oo_.PosteriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(deblank(observable_name_requested_vars{i,1})).('ME'); - end - title='Posterior mean conditional variance decomposition (in percent) with measurement error'; - save_name_string='dsge_post_mean_var_decomp_ME_cond_h'; + endo_index_varlist = strmatch(observable_name_requested_vars{i}, var_list_, 'exact'); + oo_ = posterior_analysis('conditional decomposition', var_list_{endo_index_varlist}, 'ME', Steps, options_, M_, oo_); + temp(i,j+1,:) = oo_.PosteriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(observable_name_requested_vars{i}).('ME'); + end + title = 'Posterior mean conditional variance decomposition (in percent) with measurement error'; + save_name_string = 'dsge_post_mean_var_decomp_ME_cond_h'; else for i=1:NumberOfObservedEndogenousVariables for j=1:NumberOfExogenousVariables - temp(i,j,:)=oo_.PriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(deblank(observable_name_requested_vars(i,:))).(deblank(M_.exo_names(j,:))); + temp(i,j,:) = oo_.PriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(observable_name_requested_vars{i}).(M_.exo_names{j}); end - endo_index_varlist=strmatch(deblank(observable_name_requested_vars{i,1}),var_list_,'exact'); - oo_ = prior_analysis('conditional decomposition',endo_index_varlist,'ME',Steps,options_,M_,oo_); - temp(i,j+1,:)=oo_.PriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(deblank(observable_name_requested_vars{i,1})).('ME'); - end - title='Prior mean conditional variance decomposition (in percent) with measurement error'; - save_name_string='dsge_prior_mean_var_decomp_ME_cond_h'; + endo_index_varlist = strmatch(observable_name_requested_vars{i}, var_list_, 'exact'); + oo_ = prior_analysis('conditional decomposition', var_list_{endo_index_varlist}, 'ME', Steps, options_, M_, oo_); + temp(i,j+1,:) = oo_.PriorTheoreticalMoments.dsge.ConditionalVarianceDecompositionME.Mean.(observable_name_requested_vars{i}).('ME'); + end + title = 'Prior mean conditional variance decomposition (in percent) with measurement error'; + save_name_string = 'dsge_prior_mean_var_decomp_ME_cond_h'; end for step_iter=1:length(Steps) - title_print=[title, ' Period ' int2str(Steps(step_iter))]; + title_print = [title, ' Period ' int2str(Steps(step_iter))]; headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers,'ME'); - lh = size(deblank(var_list_),2)+2; - dyntable(options_,title_print,headers,deblank(char(observable_name_requested_vars)),100* ... - temp(:,:,step_iter),lh,8,2); + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(' ', headers, 'ME'); + lh = cellofchararraymaxlength(var_list_)+2; + dyntable(options_, title_print, headers, observable_name_requested_vars, 100*temp(:,:,step_iter), lh, 8, 2); if options_.TeX - headers=M_.exo_names_tex; - headers = char(' ',headers,'ME'); - labels = deblank(var_list_tex(varlist_pos,:)); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title_print,[save_name_string,int2str(Steps(step_iter))],headers,labels,100*temp(:,:,step_iter),lh,8,2); + headers = M_.exo_names_tex; + headers = vertcat(' ', headers, 'ME'); + labels = var_list_tex(varlist_pos); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title_print, [save_name_string, int2str(Steps(step_iter))], headers, labels, 100*temp(:,:,step_iter), lh, 8, 2); end end skipline(); end - end + end end end diff --git a/matlab/conditional_variance_decomposition_ME_mc_analysis.m b/matlab/conditional_variance_decomposition_ME_mc_analysis.m index 0742e4547..ac34fbbdf 100644 --- a/matlab/conditional_variance_decomposition_ME_mc_analysis.m +++ b/matlab/conditional_variance_decomposition_ME_mc_analysis.m @@ -1,5 +1,5 @@ function oo_ = ... - conditional_variance_decomposition_ME_mc_analysis(NumberOfSimulations, type, dname, fname, Steps, exonames, exo, var_list, endogenous_variable_index, mh_conf_sig, oo_,options_) + conditional_variance_decomposition_ME_mc_analysis(NumberOfSimulations, type, dname, fname, Steps, exonames, exo, var_list, endo, mh_conf_sig, oo_,options_) % This function analyses the (posterior or prior) distribution of the % endogenous variables' conditional variance decomposition with measurement error. % @@ -14,8 +14,7 @@ function oo_ = ... % variable % var_list [string] (n_endo*char_length) character array with name % of endogenous variables -% endogenous_variable_index [integer] index of the current -% endogenous variable +% endo [integer] Current endogenous variable % mh_conf_sig [double] 2 by 1 vector with upper % and lower bound of HPD intervals % oo_ [structure] Dynare structure where the results are saved. @@ -23,7 +22,7 @@ function oo_ = ... % OUTPUTS % oo_ [structure] Dynare structure where the results are saved. -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -48,16 +47,16 @@ else PATH = [dname '/prior/moments/']; end -% $$$ indx = check_name(vartan,var); -% $$$ if isempty(indx) -% $$$ disp([ type '_analysis:: ' var ' is not a stationary endogenous variable!']) -% $$$ return -% $$$ end -% $$$ endogenous_variable_index = sum(1:indx); +endogenous_variable_index = check_name(var_list, endo); +if isempty(endogenous_variable_index) + disp([ type '_analysis:: Can''t find ' endo '!']) + return +end + exogenous_variable_index = check_name(exonames,exo); if isempty(exogenous_variable_index) if isequal(exo,'ME') - exogenous_variable_index=size(exonames,1)+1; + exogenous_variable_index=length(exonames)+1; else disp([ type '_analysis:: ' exo ' is not a declared exogenous variable!']) return @@ -65,9 +64,9 @@ if isempty(exogenous_variable_index) end [observable_pos_requested_vars,index_subset,index_observables]=intersect(var_list,options_.varobs,'stable'); -matrix_pos=strmatch(var_list(endogenous_variable_index,:),var_list(index_subset,:),'exact'); -name_1 = deblank(var_list(endogenous_variable_index,:)); -name_2 = deblank(exo); +matrix_pos=strmatch(endo, var_list(index_subset),'exact'); +name_1 = endo; +name_2 = exo; name = [ name_1 '.' name_2 ]; if isfield(oo_, [ TYPE 'TheoreticalMoments' ]) diff --git a/matlab/conditional_variance_decomposition_mc_analysis.m b/matlab/conditional_variance_decomposition_mc_analysis.m index d66bd0623..6fa536ad3 100644 --- a/matlab/conditional_variance_decomposition_mc_analysis.m +++ b/matlab/conditional_variance_decomposition_mc_analysis.m @@ -1,5 +1,5 @@ function oo_ = ... - conditional_variance_decomposition_mc_analysis(NumberOfSimulations, type, dname, fname, Steps, exonames, exo, var_list, endogenous_variable_index, mh_conf_sig, oo_,options_) + conditional_variance_decomposition_mc_analysis(NumberOfSimulations, type, dname, fname, Steps, exonames, exo, var_list, endo, mh_conf_sig, oo_,options_) % This function analyses the (posterior or prior) distribution of the % endogenous variables' conditional variance decomposition. % @@ -23,7 +23,7 @@ function oo_ = ... % OUTPUTS % oo_ [structure] Dynare structure where the results are saved. -% Copyright (C) 2009-2017 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -48,12 +48,6 @@ else PATH = [dname '/prior/moments/']; end -% $$$ indx = check_name(vartan,var); -% $$$ if isempty(indx) -% $$$ disp([ type '_analysis:: ' var ' is not a stationary endogenous variable!']) -% $$$ return -% $$$ end -% $$$ endogenous_variable_index = sum(1:indx); exogenous_variable_index = check_name(exonames,exo); if isempty(exogenous_variable_index) if ~isequal(exo,'ME') @@ -62,8 +56,14 @@ if isempty(exogenous_variable_index) return end -name_1 = deblank(var_list(endogenous_variable_index,:)); -name_2 = deblank(exo); +endogenous_variable_index = check_name(var_list, endo); +if isempty(endogenous_variable_index) + disp([ type '_analysis:: Can''t find ' endo '!']) + return +end + +name_1 = endo; +name_2 = exo; name = [ name_1 '.' name_2 ]; if isfield(oo_, [ TYPE 'TheoreticalMoments' ]) diff --git a/matlab/convergence_diagnostics/McMCDiagnostics.m b/matlab/convergence_diagnostics/McMCDiagnostics.m index a3fa70fd9..36c513163 100644 --- a/matlab/convergence_diagnostics/McMCDiagnostics.m +++ b/matlab/convergence_diagnostics/McMCDiagnostics.m @@ -16,7 +16,7 @@ function oo_ = McMCDiagnostics(options_, estim_params_, M_, oo_) % PARALLEL CONTEXT % See the comment in posterior_sampler.m funtion. -% Copyright (C) 2005-2017 Dynare Team +% Copyright (C) 2005-2018 Dynare Team % % This file is part of Dynare. % @@ -77,41 +77,42 @@ TotalNumberOfMhDraws = sum(record.MhDraws(:,1)); FirstMhFile = record.KeepedDraws.FirstMhFile; NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws); -param_name=[]; -param_name_tex=[]; -for jj=1:npar +param_name = {}; +param_name_tex = {}; + +for jj = 1:npar if options_.TeX - [par_name_temp,par_name_tex_temp]=get_the_name(jj,options_.TeX,M_,estim_params_,options_); - param_name = strvcat(param_name,par_name_temp); + [par_name_temp, par_name_tex_temp] = get_the_name(jj, options_.TeX, M_,estim_params_, options_); + param_name = vertcat(param_name, par_name_temp); par_name_tex_temp = strrep(par_name_tex_temp,'$',''); - param_name_tex = strvcat(param_name_tex,par_name_tex_temp); + param_name_tex = vertcat(param_name_tex, par_name_tex_temp); else - [par_name_temp]=get_the_name(jj,options_.TeX,M_,estim_params_,options_); - param_name = strvcat(param_name,par_name_temp); + par_name_temp = get_the_name(jj, options_.TeX, M_, estim_params_, options_); + param_name = vertcat(param_name, par_name_temp); end - Draws = GetAllPosteriorDraws(jj,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws); - Draws = reshape(Draws,[NumberOfDraws nblck]); + Draws = GetAllPosteriorDraws(jj, FirstMhFile, FirstLine, TotalNumberOfMhFiles, NumberOfDraws); + Draws = reshape(Draws, [NumberOfDraws nblck]); Nc = min(1000, NumberOfDraws/2); - for ll=1:nblck + for ll = 1:nblck Ifac(ll,jj) = mcmc_ifac(Draws(:,ll), Nc); end tmp = num2cell(Ifac(:,jj)); end my_title='MCMC Inefficiency factors per block'; -IFAC_header='Parameter'; -IFAC_header_tex='Parameter'; -for j=1:nblck - IFAC_header = char(IFAC_header,['Block ' int2str(j)]); - IFAC_header_tex = char(IFAC_header_tex,['Block~' int2str(j)]); +IFAC_header = {'Parameter'}; +IFAC_header_tex = {'Parameter'}; +for j = 1:nblck + IFAC_header = vertcat(IFAC_header, ['Block ' int2str(j)]); + IFAC_header_tex = vertcat(IFAC_header_tex, ['Block~' int2str(j)]); end -lh = size(param_name,2)+2; -dyntable(options_,my_title,IFAC_header,param_name,Ifac',lh,12,3); +lh = cellofchararraymaxlength(param_name)+2; +dyntable(options_, my_title, IFAC_header, param_name, Ifac', lh, 12, 3); skipline() if options_.TeX - dyn_latex_table(M_,options_,my_title,'MCMC_inefficiency_factors',IFAC_header_tex,param_name_tex,Ifac',lh,12,3); + dyn_latex_table(M_, options_, my_title, 'MCMC_inefficiency_factors', IFAC_header_tex, param_name_tex, Ifac', lh, 12, 3); end record.InefficiencyFactorsPerBlock = Ifac; update_last_mh_history_file(MetropolisFolder, ModelName, record); @@ -137,25 +138,25 @@ if nblck == 1 % Brooks and Gelman tests need more than one block first_obs_begin_sample = max(1,ceil(options_.mh_drop*NumberOfDraws)); last_obs_begin_sample = first_obs_begin_sample+round(options_.convergence.geweke.geweke_interval(1)*NumberOfDraws*(1-options_.mh_drop)); first_obs_end_sample = first_obs_begin_sample+round(options_.convergence.geweke.geweke_interval(2)*NumberOfDraws*(1-options_.mh_drop)); - param_name=[]; + param_name = {}; if options_.TeX - param_name_tex=[]; + param_name_tex = {}; end for jj=1:npar if options_.TeX - [param_name_temp, param_name_tex_temp]= get_the_name(jj,options_.TeX,M_,estim_params_,options_); - param_name_tex = strvcat(param_name_tex,strrep(param_name_tex_temp,'$','')); - param_name = strvcat(param_name,param_name_temp); + [param_name_temp, param_name_tex_temp] = get_the_name(jj, options_.TeX, M_, estim_params_, options_); + param_name_tex = vertcat(param_name_tex, strrep(param_name_tex_temp, '$','')); + param_name = vertcat(param_name, param_name_temp); else - param_name_temp = get_the_name(jj,options_.TeX,M_,estim_params_,options_); - param_name = strvcat(param_name,param_name_temp); + param_name_temp = get_the_name(jj, options_.TeX, M_,estim_params_, options_); + param_name = vertcat(param_name, param_name_temp); end end fprintf('\nGeweke (1992) Convergence Tests, based on means of draws %d to %d vs %d to %d.\n',first_obs_begin_sample,last_obs_begin_sample,first_obs_end_sample,NumberOfDraws); fprintf('p-values are for Chi2-test for equality of means.\n'); - Geweke_header=char('Parameter', 'Post. Mean', 'Post. Std', 'p-val No Taper'); - for ii=1:length(options_.convergence.geweke.taper_steps) - Geweke_header=char(Geweke_header,['p-val ' num2str(options_.convergence.geweke.taper_steps(ii)),'% Taper']); + Geweke_header = {'Parameter'; 'Post. Mean'; 'Post. Std'; 'p-val No Taper'}; + for ii = 1:length(options_.convergence.geweke.taper_steps) + Geweke_header = vertcat(Geweke_header, ['p-val ' num2str(options_.convergence.geweke.taper_steps(ii)),'% Taper']); end datamat=NaN(npar,3+length(options_.convergence.geweke.taper_steps)); for jj=1:npar @@ -175,22 +176,22 @@ if nblck == 1 % Brooks and Gelman tests need more than one block [results_vec2] = geweke_moments(param_draws2,options_); results_struct = geweke_chi2_test(results_vec1,results_vec2,results_struct,options_); - eval(['oo_.convergence.geweke.',param_name(jj,:),'=results_struct;']) + oo_.convergence.geweke.(param_name{jj}) = results_struct; datamat(jj,:)=[results_struct.posteriormean,results_struct.posteriorstd,results_struct.prob_chi2_test]; end lh = size(param_name,2)+2; - dyntable(options_,'',Geweke_header,param_name,datamat,lh,12,3); + dyntable(options_, '', Geweke_header, param_name, datamat, lh, 12, 3); if options_.TeX - Geweke_tex_header=char('Parameter', 'Mean', 'Std', 'No\ Taper'); - additional_header={[' & \multicolumn{2}{c}{Posterior} & \multicolumn{',num2str(1+length(options_.convergence.geweke.taper_steps)),'}{c}{p-values} \\'], + Geweke_tex_header = {'Parameter'; 'Mean'; 'Std'; 'No\ Taper'}; + additional_header = {[' & \multicolumn{2}{c}{Posterior} & \multicolumn{',num2str(1+length(options_.convergence.geweke.taper_steps)),'}{c}{p-values} \\'], ['\cmidrule(r{.75em}){2-3} \cmidrule(r{.75em}){4-',num2str(4+length(options_.convergence.geweke.taper_steps)),'}']}; for ii=1:length(options_.convergence.geweke.taper_steps) - Geweke_tex_header=char(Geweke_tex_header,[num2str(options_.convergence.geweke.taper_steps(ii)),'\%%\ Taper']); + Geweke_tex_header = vertcat(Geweke_tex_header, [num2str(options_.convergence.geweke.taper_steps(ii)),'\%%\ Taper']); end - headers = char(Geweke_tex_header); - lh = size(param_name_tex,2)+2; + headers = Geweke_tex_header; + lh = cellofchararraymaxlength(param_name_tex)+2; my_title=sprintf('Geweke (1992) Convergence Tests, based on means of draws %d to %d vs %d to %d. p-values are for $\\\\chi^2$-test for equality of means.',first_obs_begin_sample,last_obs_begin_sample,first_obs_end_sample,NumberOfDraws); - dyn_latex_table(M_,options_,my_title,'geweke',headers,param_name_tex,datamat,lh,12,4,additional_header); + dyn_latex_table(M_, options_, my_title, 'geweke', headers, param_name_tex, datamat, lh, 12, 4, additional_header); end skipline(2); @@ -206,17 +207,16 @@ if nblck == 1 % Brooks and Gelman tests need more than one block oo_.Raftery_Lewis = raftery_lewis(x2,Raftery_Lewis_q,Raftery_Lewis_r,Raftery_Lewis_s); oo_.Raftery_Lewis.parameter_names=param_name; my_title=sprintf('Raftery/Lewis (1992) Convergence Diagnostics, based on quantile q=%4.3f with precision r=%4.3f with probability s=%4.3f.',Raftery_Lewis_q,Raftery_Lewis_r,Raftery_Lewis_s); - headers = char('Variables','M (burn-in)','N (req. draws)','N+M (total draws)','k (thinning)'); - + headers = {'Variables'; 'M (burn-in)'; 'N (req. draws)'; 'N+M (total draws)'; 'k (thinning)'}; raftery_data_mat=[oo_.Raftery_Lewis.M_burn,oo_.Raftery_Lewis.N_prec,oo_.Raftery_Lewis.N_total,oo_.Raftery_Lewis.k_thin]; raftery_data_mat=[raftery_data_mat;max(raftery_data_mat)]; - labels_Raftery_Lewis=char(param_name,'Maximum'); - lh = size(labels_Raftery_Lewis,2)+2; - dyntable(options_,my_title,headers,labels_Raftery_Lewis,raftery_data_mat,lh,10,0); + labels_Raftery_Lewis = vertcat(param_name, 'Maximum'); + lh = cellofchararraymaxlength(labels_Raftery_Lewis)+2; + dyntable(options_, my_title, headers, labels_Raftery_Lewis, raftery_data_mat, lh, 10, 0); if options_.TeX - labels_Raftery_Lewis_tex=char(param_name_tex,'Maximum'); - lh = size(labels_Raftery_Lewis_tex,2)+2; - dyn_latex_table(M_,options_,my_title,'raftery_lewis',headers,labels_Raftery_Lewis_tex,raftery_data_mat,lh,10,0); + labels_Raftery_Lewis_tex = vertcat(param_name_tex, 'Maximum'); + lh = cellofchararraymaxlength(labels_Raftery_Lewis_tex)+2; + dyn_latex_table(M_, options_, my_title, 'raftery_lewis', headers, labels_Raftery_Lewis_tex, raftery_data_mat, lh, 10, 0); end end diff --git a/matlab/datatomfile.m b/matlab/datatomfile.m index 76928c77f..4cff2b26a 100644 --- a/matlab/datatomfile.m +++ b/matlab/datatomfile.m @@ -17,7 +17,7 @@ function datatomfile (s, var_list, names) % provided, all the variables as defined in M_.endo_names will be saved in % the generated m file. -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -40,24 +40,28 @@ global M_ oo_ sm=[s,'.m']; fid=fopen(sm,'w') ; -if nargin < 2 || size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr,:); +if nargin < 2 || isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -n = size(var_list,1); -ivar=zeros(n,1); +n = length(var_list); if nargin==3 - if ~isequal(size(var_list,1),n) + names = cellstr(names); + n = length(names); + if ~isequal(length(var_list), n) error('datatomfile:: Second and third arguments must have the same number of rows (variables)!') end else names = var_list; + n = length(names); end +ivar=zeros(n, 1); + % Get indices for the endogenous variables. for i=1:n - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) error (['One of the specified variables does not exist']) ; else @@ -69,7 +73,7 @@ fprintf(fid,'%% Dataset generated by %s.\n',stack(2).file); fprintf(fid,['%% ' datestr(now,0) '\n']); % Save the selected data. for i = 1:n - fprintf(fid,[strtrim(names(i,:)), ' = ['],'\n') ; + fprintf(fid,[names{i}, ' = ['],'\n') ; fprintf(fid,'\n') ; fprintf(fid,'%15.8g\n',oo_.endo_simul(ivar(i),:)') ; fprintf(fid,'];\n') ; diff --git a/matlab/discretionary_policy.m b/matlab/discretionary_policy.m index e021e3375..6513cb06b 100644 --- a/matlab/discretionary_policy.m +++ b/matlab/discretionary_policy.m @@ -1,6 +1,6 @@ function info = discretionary_policy(var_list) -% Copyright (C) 2007-2015 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -27,9 +27,8 @@ info = stoch_simul(var_list); if options_.noprint == 0 disp_steady_state(M_,oo_) for i=M_.orig_endo_nbr:M_.endo_nbr - if strmatch('mult_',M_.endo_names(i,:)) - disp(sprintf('%s \t\t %g',M_.endo_names(i,:), ... - oo_.dr.ys(i))); + if strmatch('mult_', M_.endo_names{i}) + disp(sprintf('%s \t\t %g', M_.endo_names{i}, oo_.dr.ys(i))); end end end diff --git a/matlab/discretionary_policy_1.m b/matlab/discretionary_policy_1.m index 224b618c0..7e472585e 100644 --- a/matlab/discretionary_policy_1.m +++ b/matlab/discretionary_policy_1.m @@ -1,6 +1,6 @@ function [dr,ys,info]=discretionary_policy_1(oo_,Instruments) -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -42,7 +42,7 @@ else M_.orig_model = M_; end -beta = get_optimal_policy_discount_factor(M_.params,M_.param_names); +beta = get_optimal_policy_discount_factor(M_.params, M_.param_names); exo_nbr = M_.exo_nbr; if isfield(M_,'orig_model') @@ -70,7 +70,7 @@ end if any(any(Uy~=0)) non_zero_derivs=find(any(Uy~=0)); for ii=1:length(non_zero_derivs) - non_zero_deriv_names{ii,1}=deblank(M_.endo_names(non_zero_derivs(ii),:)); + non_zero_deriv_names{ii,1} = M_.endo_names{non_zero_derivs(ii)}; end disp_string=[non_zero_deriv_names{1,:}]; for ii=2:size(non_zero_deriv_names,1) @@ -116,7 +116,7 @@ end instr_id=nan(instr_nbr,1); for j=1:instr_nbr vj=deblank(Instruments(j,:)); - vj_id=strmatch(vj,endo_names,'exact'); + vj_id=strmatch(vj, endo_names, 'exact'); if ~isempty(vj_id) instr_id(j)=vj_id; else diff --git a/matlab/disp_dr.m b/matlab/disp_dr.m index d5fcb84fb..79408a6e1 100644 --- a/matlab/disp_dr.m +++ b/matlab/disp_dr.m @@ -8,7 +8,7 @@ function disp_dr(dr,order,var_list) % var_list [char array]: list of endogenous variables for which the % decision rules should be printed % -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -43,17 +43,17 @@ else k1 = dr.order_var; end -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr, :); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -nvar = size(var_list,1); +nvar = length(var_list); ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names(k1,:),'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names(k1), 'exact'); if isempty(i_tmp) - disp(var_list(i,:)); + disp(var_list{i}); error (['One of the variable specified does not exist']) ; else ivar(i) = i_tmp; @@ -63,7 +63,7 @@ end % get length of display strings header_label_length=16; %default for ii=1:length(ivar) - header_label_length=max(header_label_length,length(deblank(M_.endo_names(k1(ivar(ii)),:)))+2); + header_label_length = max(header_label_length,length(M_.endo_names{k1(ivar(ii))})+2); end header_label_format = sprintf('%%%ds',header_label_length); value_format_float = sprintf('%%%d.6f',header_label_length); @@ -81,7 +81,7 @@ else aux_var_additional_characters=0; end -var_name_width=max([max(size(deblank(M_.endo_names(k1(ivar),:)),2)),max(size(deblank(M_.exo_names),2))]); +var_name_width = max([cellofchararraymaxlength(M_.endo_names(k1(ivar))), cellofchararraymaxlength(M_.exo_names)]); %deal with covariances if order > 1 @@ -97,7 +97,7 @@ disp('POLICY AND TRANSITION FUNCTIONS') % variable names str = char(32*ones(1,var_name_width)); for i=1:nvar - str = [str sprintf(header_label_format,deblank(M_.endo_names(k1(ivar(i)),:)))]; + str = [str sprintf(header_label_format, M_.endo_names{k1(ivar(i))})]; end disp(str); % @@ -150,10 +150,10 @@ end % for k=1:nu flag = 0; - str = sprintf(label_format,M_.exo_names(k,:)); + str = sprintf(label_format, M_.exo_names{k}); for i=1:nvar x = dr.ghu(ivar(i),k); - [str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_); + [str,flag] = get_print_string(str, x, value_format_zero, value_format_float, flag, options_); end if flag disp(str) @@ -167,7 +167,7 @@ if order > 1 flag = 0; str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ... subst_auxvar(k1(klag(j,1)),klag(j,2)-M_.maximum_lag-2)); - str = sprintf(label_format,str1); + str = sprintf(label_format, str1); for i=1:nvar if k == j x = dr.ghxx(ivar(i),(k-1)*nx+j)/2; @@ -187,14 +187,14 @@ if order > 1 for k = 1:nu for j = 1:k flag = 0; - str = sprintf(label_format,[deblank(M_.exo_names(k,:)) ',' deblank(M_.exo_names(j,:))] ); + str = sprintf(label_format, [M_.exo_names{k} ',' M_.exo_names{j}]); for i=1:nvar if k == j x = dr.ghuu(ivar(i),(k-1)*nu+j)/2; else x = dr.ghuu(ivar(i),(k-1)*nu+j); end - [str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_); + [str,flag]=get_print_string(str, x, value_format_zero, value_format_float, flag, options_); end if flag disp(str) @@ -207,8 +207,7 @@ if order > 1 for k = 1:nx for j = 1:nu flag = 0; - str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ... - deblank(M_.exo_names(j,:))); + str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), M_.exo_names{j}); str = sprintf(label_format,str1); for i=1:nvar x = dr.ghxu(ivar(i),(k-1)*nu+j); @@ -230,41 +229,40 @@ function str = subst_auxvar(aux_index, aux_lead_lag) global M_ if aux_index <= M_.orig_endo_nbr - str = sprintf('%s(%d)', deblank(M_.endo_names(aux_index,:)), aux_lead_lag); + str = sprintf('%s(%d)', M_.endo_names{aux_index}, aux_lead_lag); return end for i = 1:length(M_.aux_vars) if M_.aux_vars(i).endo_index == aux_index switch M_.aux_vars(i).type case 0 - str = sprintf('%s(%d)',deblank(M_.endo_names(aux_index,:)),aux_lead_lag); + str = sprintf('%s(%d)', M_.endo_names{aux_index}, aux_lead_lag); return case 1 - orig_name = deblank(M_.endo_names(M_.aux_vars(i).orig_index, :)); + orig_name = M_.endo_names{M_.aux_vars(i).orig_index}; case 3 - orig_name = deblank(M_.exo_names(M_.aux_vars(i).orig_index, :)); + orig_name = M_.exo_names{M_.aux_vars(i).orig_index}; case 4 str = sprintf('EXPECTATION(%d)(...)', aux_lead_lag); return case 6 - str = sprintf('%s(%d)', ... - deblank(M_.endo_names(M_.aux_vars(i).endo_index, :)),aux_lead_lag); + str = sprintf('%s(%d)', M_.endo_names{M_.aux_vars(i).endo_index}, aux_lead_lag); return otherwise - error(sprintf('Invalid auxiliary type: %s', M_.endo_names(aux_index, :))) + error(sprintf('Invalid auxiliary type: %s', M_.endo_names{aux_index})) end str = sprintf('%s(%d)', orig_name, M_.aux_vars(i).orig_lead_lag+aux_lead_lag); return end end -error(sprintf('Could not find aux var: %s', M_.endo_names(aux_index, :))) +error(sprintf('Could not find aux var: %s', M_.endo_names{aux_index})) end -function [str,flag]=get_print_string(str,x,value_format_zero,value_format_float,flag,options_) +function [str,flag]=get_print_string(str, x, value_format_zero, value_format_float, flag, options_) if abs(x) >= options_.dr_display_tol flag = 1; - str = [str sprintf(value_format_float,x)]; + str = [str sprintf(value_format_float, x)]; else - str = [str sprintf(value_format_zero,0)]; + str = [str sprintf(value_format_zero, 0)]; end end \ No newline at end of file diff --git a/matlab/disp_model_summary.m b/matlab/disp_model_summary.m index b04d025b4..6b0aefac0 100644 --- a/matlab/disp_model_summary.m +++ b/matlab/disp_model_summary.m @@ -8,7 +8,7 @@ function disp_model_summary(M,dr,options) % dr [matlab structure] Decision rules % options [matlab structure] Options % -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -36,7 +36,7 @@ disp([' Number of jumpers: ' ... int2str(length(find(dr.kstate(:,2) == M.maximum_lag+2)))]) disp([' Number of static variables: ' int2str(M.nstatic)]) my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS'; -labels = deblank(M.exo_names); -headers = char('Variables',labels); -lh = size(labels,2)+2; -dyntable(options,my_title,headers,labels,M.Sigma_e,lh,10,6); +labels = M.exo_names; +headers = vertcat('Variables', labels); +lh = cellofchararraymaxlength(labels)+2; +dyntable(options, my_title, headers, labels, M.Sigma_e, lh, 10, 6); diff --git a/matlab/disp_moments.m b/matlab/disp_moments.m index be56d2c70..795c8f40e 100644 --- a/matlab/disp_moments.m +++ b/matlab/disp_moments.m @@ -11,7 +11,7 @@ function oo_=disp_moments(y,var_list,M_,options_,oo_) % OUTPUTS % oo_ [structure] Dynare's results structure, -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -31,16 +31,16 @@ function oo_=disp_moments(y,var_list,M_,options_,oo_) warning_old_state = warning; warning off -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr, :); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -nvar = size(var_list,1); +nvar = length(var_list); ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) - error (['One of the variable specified does not exist']) ; + error ('One of the variable specified does not exist') ; else ivar(i) = i_tmp; end @@ -50,7 +50,7 @@ y = y(ivar,options_.drop+1:end)'; ME_present=0; if ~all(M_.H==0) - [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable'); + [observable_pos_requested_vars, index_subset, index_observables] = intersect(ivar, options_.varobs_id, 'stable'); if ~isempty(observable_pos_requested_vars) ME_present=1; i_ME = setdiff([1:size(M_.H,1)],find(diag(M_.H) == 0)); % find ME with 0 variance @@ -79,20 +79,17 @@ oo_.var = y'*y/size(y,1); oo_.skewness = (mean(y.^3)./s2.^1.5)'; oo_.kurtosis = (mean(y.^4)./(s2.*s2)-3)'; -labels = deblank(M_.endo_names(ivar,:)); -labels_TeX = deblank(M_.endo_names_tex(ivar,:)); +labels = M_.endo_names(ivar); +labels_TeX = M_.endo_names_tex(ivar); if options_.nomoments == 0 z = [ m' s' s2' (mean(y.^3)./s2.^1.5)' (mean(y.^4)./(s2.*s2)-3)' ]; title='MOMENTS OF SIMULATED VARIABLES'; - - title=add_filter_subtitle(title,options_); - - headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE','SKEWNESS', ... - 'KURTOSIS'); - dyntable(options_,title,headers,labels,z,size(labels,2)+2,16,6); + title=add_filter_subtitle(title, options_); + headers = {'VARIABLE'; 'MEAN'; 'STD. DEV.'; 'VARIANCE'; 'SKEWNESS'; 'KURTOSIS'}; + dyntable(options_, title, headers, labels, z, cellofchararraymaxlength(labels)+2, 16, 6); if options_.TeX - dyn_latex_table(M_,options_,title,'sim_moments',headers,labels_TeX,z,size(labels,2)+2,16,6); + dyn_latex_table(M_, options_, title, 'sim_moments', headers, labels_TeX, z, cellofchararraymaxlength(labels)+2, 16, 6); end end @@ -103,15 +100,13 @@ if options_.nocorr == 0 end if options_.noprint == 0 title = 'CORRELATION OF SIMULATED VARIABLES'; - title=add_filter_subtitle(title,options_); - - headers = char('VARIABLE',M_.endo_names(ivar,:)); - dyntable(options_,title,headers,labels,corr,size(labels,2)+2,8,4); + headers = vertcat('VARIABLE', M_.endo_names(ivar)); + dyntable(options_, title, headers, labels, corr, cellofchararraymaxlength(labels)+2, 8, 4); if options_.TeX - headers = char('VARIABLE',M_.endo_names_tex(ivar,:)); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'sim_corr_matrix',headers,labels_TeX,corr,size(labels,2)+2,8,4); + headers = vertcat('VARIABLE', M_.endo_names_tex(ivar)); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'sim_corr_matrix', headers, labels_TeX, corr, lh, 8,4); end end end @@ -130,12 +125,12 @@ if ar > 0 if options_.noprint == 0 title = 'AUTOCORRELATION OF SIMULATED VARIABLES'; title=add_filter_subtitle(title,options_); - headers = char('VARIABLE',int2str([1:ar]')); - dyntable(options_,title,headers,labels,autocorr,size(labels,2)+2,8,4); + headers = vertcat('VARIABLE', cellstr(int2str([1:ar]'))); + dyntable(options_, title, headers, labels, autocorr, cellofchararraymaxlength(labels)+2, 8, 4); if options_.TeX - headers = char('VARIABLE',int2str([1:ar]')); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'sim_autocorr_matrix',headers,labels_TeX,autocorr,size(labels_TeX,2)+2,8,4); + headers = vertcat('VARIABLE', cellstr(int2str([1:ar]'))); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'sim_autocorr_matrix', headers, labels_TeX, autocorr, cellofchararraymaxlength(labels_TeX)+2, 8, 4); end end @@ -180,28 +175,31 @@ if ~options_.nodecomposition if ~options_.noprint %options_.nomoments == 0 skipline() title='VARIANCE DECOMPOSITION SIMULATING ONE SHOCK AT A TIME (in percent)'; - title=add_filter_subtitle(title,options_); - headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers); - lh = size(deblank(M_.endo_names(ivar,:)),2)+2; - dyntable(options_,title,char(headers,'Tot. lin. contr.'),deblank(M_.endo_names(ivar,:)),[oo_.variance_decomposition sum(oo_.variance_decomposition,2)],lh,8,2); + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(' ', headers); + lh = cellofchararraymaxlength(M_.endo_names(ivar))+2; + dyntable(options_, title, vertcat(headers, 'Tot. lin. contr.'), ... + M_.endo_names(ivar), [oo_.variance_decomposition sum(oo_.variance_decomposition,2)], lh, 8, 2); if ME_present - headers_ME=char(headers,'ME'); - dyntable(options_,[title,' WITH MEASUREMENT ERROR'],char(headers_ME,'Tot. lin. contr.'),deblank(M_.endo_names(ivar(index_subset), ... - :)),[oo_.variance_decomposition_ME sum(oo_.variance_decomposition_ME,2)],lh,8,2); + headers_ME = vertcat(headers, 'ME'); + dyntable(options_, [title,' WITH MEASUREMENT ERROR'], vertcat(headers_ME, 'Tot. lin. contr.'), M_.endo_names(ivar(index_subset)), ... + [oo_.variance_decomposition_ME sum(oo_.variance_decomposition_ME, 2)], lh, 8, 2); end if options_.TeX - headers=M_.exo_names_tex; - headers = char(' ',headers); - labels = deblank(M_.endo_names_tex(ivar,:)); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'sim_var_decomp',char(headers,'Tot. lin. contr.'),labels_TeX,[oo_.variance_decomposition sum(oo_.variance_decomposition,2)],lh,8,2); + headers = M_.exo_names_tex; + headers = vertcat(' ', headers); + labels = M_.endo_names_tex(ivar); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'sim_var_decomp', vertcat(headers, 'Tot. lin. contr.'), ... + labels_TeX, [oo_.variance_decomposition sum(oo_.variance_decomposition, 2)], lh, 8, 2); if ME_present - headers_ME=char(headers,'ME'); - dyn_latex_table(M_,options_,[title,' WITH MEASUREMENT ERROR'],'sim_var_decomp_ME',char(headers_ME,'Tot. lin. contr.'),labels_TeX(ivar(index_subset),:),[oo_.variance_decomposition_ME sum(oo_.variance_decomposition_ME,2)],lh,8,2); + headers_ME = vertcat(headers, 'ME'); + dyn_latex_table(M_, options_, [title, ' WITH MEASUREMENT ERROR'], 'sim_var_decomp_ME', ... + vertcat(headers_ME, 'Tot. lin. contr.'), ... + labels_TeX(ivar(index_subset)), ... + [oo_.variance_decomposition_ME sum(oo_.variance_decomposition_ME, 2)], lh, 8, 2); end end @@ -218,7 +216,7 @@ end warning(warning_old_state); end -function y=get_filtered_time_series(y,m,options_) +function y = get_filtered_time_series(y, m, options_) if options_.hp_filter && ~options_.one_sided_hp_filter && ~options_.bandpass.indicator [hptrend,y] = sample_hp_filter(y,options_.hp_filter); diff --git a/matlab/disp_steady_state.m b/matlab/disp_steady_state.m index 0543affc7..70f52173b 100644 --- a/matlab/disp_steady_state.m +++ b/matlab/disp_steady_state.m @@ -12,7 +12,7 @@ function disp_steady_state(M,oo) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -34,6 +34,7 @@ disp('STEADY-STATE RESULTS:') skipline() endo_names = M.endo_names; steady_state = oo.steady_state; -for i=1:M.orig_endo_nbr - disp(sprintf('%s \t\t %g',endo_names(i,:),steady_state(i))); + +for i = 1:M.orig_endo_nbr + disp(sprintf('%s \t\t %g', endo_names{i}, steady_state(i))); end diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m index 5ef074780..604c6b0dc 100644 --- a/matlab/disp_th_moments.m +++ b/matlab/disp_th_moments.m @@ -1,7 +1,8 @@ -function oo_=disp_th_moments(dr,var_list,M_,options_,oo_) +function oo_ = disp_th_moments(dr, var_list, M_, options_, oo_) + % Display theoretical moments of variables -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -22,21 +23,21 @@ nodecomposition = options_.nodecomposition; if options_.one_sided_hp_filter error(['disp_th_moments:: theoretical moments incompatible with one-sided HP filter. Use simulated moments instead']) end -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr, :); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -nvar = size(var_list,1); +nvar = length(var_list); ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) - error (['One of the variable specified does not exist']) ; + error ('One of the variable specified does not exist'); else ivar(i) = i_tmp; end end -[oo_.gamma_y,stationary_vars] = th_autocovariances(dr,ivar,M_,options_, nodecomposition); +[oo_.gamma_y,stationary_vars] = th_autocovariances(dr, ivar, M_, options_, nodecomposition); m = dr.ys(ivar); non_stationary_vars = setdiff(1:length(ivar),stationary_vars); m(non_stationary_vars) = NaN; @@ -71,75 +72,73 @@ if size(stationary_vars, 1) > 0 end if ~options_.noprint %options_.nomoments == 0 if options_.order == 2 - title='APPROXIMATED THEORETICAL MOMENTS'; + title = 'APPROXIMATED THEORETICAL MOMENTS'; else - title='THEORETICAL MOMENTS'; + title = 'THEORETICAL MOMENTS'; end - title=add_filter_subtitle(title,options_); - headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE'); - labels = deblank(M_.endo_names(ivar,:)); - lh = size(labels,2)+2; - dyntable(options_,title,headers,labels,z,lh,11,4); + title = add_filter_subtitle(title, options_); + headers = {'VARIABLE';'MEAN';'STD. DEV.';'VARIANCE'}; + labels = M_.endo_names(ivar); + lh = cellofchararraymaxlength(labels)+2; + dyntable(options_, title, headers, labels, z, lh, 11, 4); if options_.TeX - labels = deblank(M_.endo_names_tex(ivar,:)); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'th_moments',headers,labels,z,lh,11,4); + labels = M_.endo_names_tex(ivar); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'th_moments', headers, labels, z, lh, 11, 4); end if M_.exo_nbr > 1 && ~nodecomposition skipline() if options_.order == 2 - title='APPROXIMATED VARIANCE DECOMPOSITION (in percent)'; + title = 'APPROXIMATED VARIANCE DECOMPOSITION (in percent)'; else - title='VARIANCE DECOMPOSITION (in percent)'; + title = 'VARIANCE DECOMPOSITION (in percent)'; end - title=add_filter_subtitle(title,options_); + title = add_filter_subtitle(title, options_); headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers = char(' ',headers); - lh = size(deblank(M_.endo_names(ivar(stationary_vars),:)),2)+2; - dyntable(options_,title,headers,deblank(M_.endo_names(ivar(stationary_vars), ... - :)),100* ... - oo_.gamma_y{options_.ar+2}(stationary_vars,:),lh,8,2); + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(' ', headers); + lh = cellofchararraymaxlength(M_.endo_names(ivar(stationary_vars)))+2; + dyntable(options_, title, headers, M_.endo_names(ivar(stationary_vars)), 100*oo_.gamma_y{options_.ar+2}(stationary_vars,:), lh, 8, 2); if ME_present - [stationary_observables,pos_index_subset]=intersect(index_subset,stationary_vars,'stable'); - headers_ME=char(headers,'ME'); - dyntable(options_,[title,' WITH MEASUREMENT ERROR'],headers_ME,deblank(M_.endo_names(ivar(stationary_observables), ... - :)),oo_.variance_decomposition_ME(pos_index_subset,:),lh,8,2); + [stationary_observables, pos_index_subset] = intersect(index_subset, stationary_vars, 'stable'); + headers_ME = vertcat(headers, 'ME'); + dyntable(options_, [title,' WITH MEASUREMENT ERROR'], headers_ME, M_.endo_names(ivar(stationary_observables)), ... + oo_.variance_decomposition_ME(pos_index_subset,:), lh, 8, 2); end if options_.TeX - headers=M_.exo_names_tex; - headers = char(' ',headers); - labels = deblank(M_.endo_names_tex(ivar(stationary_vars),:)); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'th_var_decomp_uncond',headers,labels,100*oo_.gamma_y{options_.ar+2}(stationary_vars,:),lh,8,2); + headers = M_.exo_names_tex; + headers = vertcat(' ', headers); + labels = M_.endo_names_tex(ivar(stationary_vars)); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'th_var_decomp_uncond', headers, labels, 100*oo_.gamma_y{options_.ar+2}(stationary_vars,:), lh, 8, 2); if ME_present - headers_ME=char(headers,'ME'); - dyn_latex_table(M_,options_,[title,' WITH MEASUREMENT ERROR'],'th_var_decomp_uncond_ME',headers_ME,labels,oo_.variance_decomposition_ME(pos_index_subset,:),lh,8,2); + headers_ME = vertcat(headers, 'ME'); + dyn_latex_table(M_, options_, [title,' WITH MEASUREMENT ERROR'], ... + 'th_var_decomp_uncond_ME', headers_ME, labels, oo_.variance_decomposition_ME(pos_index_subset,:), lh, 8, 2); end end end end - conditional_variance_steps = options_.conditional_variance_decomposition; if length(conditional_variance_steps) StateSpaceModel.number_of_state_equations = M_.endo_nbr; StateSpaceModel.number_of_state_innovations = M_.exo_nbr; StateSpaceModel.sigma_e_is_diagonal = M_.sigma_e_is_diagonal; - [StateSpaceModel.transition_matrix,StateSpaceModel.impulse_matrix] = kalman_transition_matrix(dr,(1:M_.endo_nbr)',M_.nstatic+(1:M_.nspred)',M_.exo_nbr); + [StateSpaceModel.transition_matrix, StateSpaceModel.impulse_matrix] = ... + kalman_transition_matrix(dr,(1:M_.endo_nbr)',M_.nstatic+(1:M_.nspred)',M_.exo_nbr); StateSpaceModel.state_innovations_covariance_matrix = M_.Sigma_e; StateSpaceModel.order_var = dr.order_var; - StateSpaceModel.measurement_error=M_.H; - StateSpaceModel.observable_pos=options_.varobs_id; - [oo_.conditional_variance_decomposition, oo_.conditional_variance_decomposition_ME]= conditional_variance_decomposition(StateSpaceModel,conditional_variance_steps,ivar); - + StateSpaceModel.measurement_error = M_.H; + StateSpaceModel.observable_pos = options_.varobs_id; + [oo_.conditional_variance_decomposition, oo_.conditional_variance_decomposition_ME] = ... + conditional_variance_decomposition(StateSpaceModel, conditional_variance_steps, ivar); if options_.noprint == 0 - display_conditional_variance_decomposition(oo_.conditional_variance_decomposition,conditional_variance_steps,... - ivar,M_,options_); + display_conditional_variance_decomposition(oo_.conditional_variance_decomposition, conditional_variance_steps, ivar, M_, options_); if ME_present - display_conditional_variance_decomposition(oo_.conditional_variance_decomposition_ME,conditional_variance_steps,... - observable_pos_requested_vars,M_,options_); - end + display_conditional_variance_decomposition(oo_.conditional_variance_decomposition_ME, conditional_variance_steps, ... + observable_pos_requested_vars, M_, options_); + end end end end @@ -151,32 +150,33 @@ if length(i1) == 0 return end -if options_.nocorr == 0 && size(stationary_vars, 1) > 0 - corr=NaN(size(oo_.gamma_y{1})); +if options_.nocorr == 0 && size(stationary_vars, 1)>0 + corr = NaN(size(oo_.gamma_y{1})); corr(i1,i1) = oo_.gamma_y{1}(i1,i1)./(sd(i1)*sd(i1)'); if options_.contemporaneous_correlation oo_.contemporaneous_correlation = corr; end if ~options_.noprint skipline() - if options_.order == 2 - title='APPROXIMATED MATRIX OF CORRELATIONS'; + if options_.order==2 + title = 'APPROXIMATED MATRIX OF CORRELATIONS'; else - title='MATRIX OF CORRELATIONS'; + title = 'MATRIX OF CORRELATIONS'; end - title=add_filter_subtitle(title,options_); - labels = deblank(M_.endo_names(ivar(i1),:)); - headers = char('Variables',labels); - lh = size(labels,2)+2; - dyntable(options_,title,headers,labels,corr(i1,i1),lh,8,4); + title = add_filter_subtitle(title, options_); + labels = M_.endo_names(ivar(i1)); + headers = vertcat('Variables', labels); + lh = cellofchararraymaxlength(labels)+2; + dyntable(options_, title, headers, labels, corr(i1,i1), lh, 8, 4); if options_.TeX - labels = deblank(M_.endo_names_tex(ivar(i1),:)); - headers=char('Variables',labels); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'th_corr_matrix',headers,labels,corr(i1,i1),lh,8,4); + labels = M_.endo_names_tex(ivar(i1)); + headers = vertcat('Variables', labels); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'th_corr_matrix', headers, labels, corr(i1,i1), lh, 8, 4); end end end + if options_.ar > 0 && size(stationary_vars, 1) > 0 z=[]; for i=1:options_.ar @@ -186,20 +186,20 @@ if options_.ar > 0 && size(stationary_vars, 1) > 0 if ~options_.noprint skipline() if options_.order == 2 - title='APPROXIMATED COEFFICIENTS OF AUTOCORRELATION'; + title = 'APPROXIMATED COEFFICIENTS OF AUTOCORRELATION'; else - title='COEFFICIENTS OF AUTOCORRELATION'; + title = 'COEFFICIENTS OF AUTOCORRELATION'; end - title=add_filter_subtitle(title,options_); - labels = deblank(M_.endo_names(ivar(i1),:)); - headers = char('Order ',int2str([1:options_.ar]')); - lh = size(labels,2)+2; - dyntable(options_,title,headers,labels,z,lh,8,4); + title = add_filter_subtitle(title, options_); + labels = M_.endo_names(ivar(i1)); + headers = vertcat('Order ', cellstr(int2str([1:options_.ar]'))); + lh = cellofchararraymaxlength(labels)+2; + dyntable(options_, title, headers, labels, z, lh, 8, 4); if options_.TeX - labels = deblank(M_.endo_names_tex(ivar(i1),:)); - headers=char('Order ',int2str([1:options_.ar]')); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,title,'th_autocorr_matrix',headers,labels,z,lh,8,4); + labels = M_.endo_names_tex(ivar(i1)); + headers = vertcat('Order ', cellstr(int2str([1:options_.ar]'))); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, title, 'th_autocorr_matrix', headers, labels, z, lh, 8, 4); end end end diff --git a/matlab/display_conditional_variance_decomposition.m b/matlab/display_conditional_variance_decomposition.m index dd029bde6..8cee73dc5 100644 --- a/matlab/display_conditional_variance_decomposition.m +++ b/matlab/display_conditional_variance_decomposition.m @@ -13,7 +13,7 @@ function display_conditional_variance_decomposition(conditional_decomposition_ar % OUTPUTS % none % -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -33,18 +33,19 @@ function display_conditional_variance_decomposition(conditional_decomposition_ar if size(conditional_decomposition_array,3)==M_.exo_nbr %no ME input shock_number=M_.exo_nbr; headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; + headers(M_.exo_names_orig_ord) = headers; if options_.TeX - headers_TeX=char('',deblank(M_.exo_names_tex)); + headers_TeX = vertcat(' ', M_.exo_names_tex); end title_addon=''; elseif size(conditional_decomposition_array,3)==M_.exo_nbr+1 %ME input shock_number=M_.exo_nbr+1; headers = M_.exo_names; - headers(M_.exo_names_orig_ord,:) = headers; - headers=char(headers,'ME'); + headers(M_.exo_names_orig_ord) = headers; + headers = vertcat(headers, 'ME'); if options_.TeX - headers_TeX=char('',deblank(strvcat(M_.exo_names_tex,'ME'))); + headers_TeX = vertcat(M_.exo_names_tex, 'ME'); + headers_TeX = vertcat(' ', headers_TeX); end title_addon=' - WITH MEASUREMENT ERROR'; else @@ -61,25 +62,22 @@ else disp(title) end -headers = char(' ',headers); -lh = size(deblank(M_.endo_names(SubsetOfVariables,:)),2)+2; +headers = vertcat(' ', headers); +lh = cellofchararraymaxlength(M_.endo_names(SubsetOfVariables))+2; if options_.TeX - labels_TeX = deblank(M_.endo_names_tex(SubsetOfVariables,:)); - lh = size(labels_TeX,2)+2; + labels_TeX = M_.endo_names_tex(SubsetOfVariables); + lh = cellofchararraymaxlength(labels_TeX)+2; end -vardec_i = zeros(length(SubsetOfVariables),shock_number); +vardec_i = zeros(length(SubsetOfVariables), shock_number); for i=1:length(Steps) disp(['Period ' int2str(Steps(i)) ':']) for j=1:shock_number - vardec_i(:,j) = 100*conditional_decomposition_array(:, ... - i,j); + vardec_i(:,j) = 100*conditional_decomposition_array(:,i,j); end - dyntable(options_,'',headers,... - deblank(M_.endo_names(SubsetOfVariables,:)),... - vardec_i,lh,8,2); + dyntable(options_, '', headers, M_.endo_names(SubsetOfVariables), vardec_i, lh, 8, 2); if options_.TeX - dyn_latex_table(M_,options_,[title,'; Period ' int2str(Steps(i))],['th_var_decomp_cond_h',int2str(Steps(i))],headers_TeX,labels_TeX,vardec_i,lh,8,2); + dyn_latex_table(M_, options_, [title, '; Period ' int2str(Steps(i))], ['th_var_decomp_cond_h', int2str(Steps(i))], headers_TeX, labels_TeX, vardec_i, lh, 8, 2); end end \ No newline at end of file diff --git a/matlab/display_estimation_results_table.m b/matlab/display_estimation_results_table.m index 6faf6a834..ce09a3713 100644 --- a/matlab/display_estimation_results_table.m +++ b/matlab/display_estimation_results_table.m @@ -10,7 +10,7 @@ function oo_=display_estimation_results_table(xparam1,stdh,M_,options_,estim_par % o options_ Matlab's structure describing the options (initialized by dynare, see @ref{options_}). % o bayestopt_ Matlab's structure describing the priors (initialized by dynare, see @ref{bayesopt_}). % o oo_ Matlab's structure gathering the results (initialized by dynare, see @ref{oo_}). -% o pnames [string] Character Array storing the names for prior distributions +% o pnames [string] Cell of strings storing the names for prior distributions % o table_title [string] Title of the Table % o field_name [string] String storing the name of the fields for oo_ where the parameters are stored % @@ -20,7 +20,7 @@ function oo_=display_estimation_results_table(xparam1,stdh,M_,options_,estim_par % SPECIAL REQUIREMENTS % None. -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -49,12 +49,12 @@ disp(['RESULTS FROM ' upper(table_title) ' ESTIMATION']) LaTeXtitle=strrep(table_title,' ','_'); tstath = abs(xparam1)./stdh; -header_width = row_header_width(M_,estim_params_,bayestopt_); +header_width = row_header_width(M_, estim_params_, bayestopt_); if strcmp(field_name,'posterior') - tit1 = sprintf('%-*s %7s %8s %7s %4s %6s\n',header_width-2,' ','prior mean', ... - 'mode','s.d.','prior','pstdev'); + tit1 = sprintf('%-*s %7s %8s %7s %4s %6s\n', header_width-2, ' ', 'prior mean', ... + 'mode', 's.d.', 'prior', 'pstdev'); else - tit1 = sprintf('%-*s %10s %7s %6s\n',header_width-2,' ','Estimate','s.d.','t-stat'); + tit1 = sprintf('%-*s %10s %7s %6s\n', header_width-2, ' ', 'Estimate', 's.d.', 't-stat'); end if np ip = nvx+nvn+ncx+ncn+1; @@ -66,11 +66,11 @@ if np fprintf('%-*s %7.3f %8.4f %7.4f %4s %6.4f \n', ... header_width,name, ... bayestopt_.p1(ip),xparam1(ip),stdh(ip), ... - pnames(bayestopt_.pshape(ip)+1,:), ... + pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p2(ip)); else fprintf('%-*s %8.4f %7.4f %7.4f \n', ... - header_width,name,xparam1(ip),stdh(ip),tstath(ip)); + header_width, name, xparam1(ip), stdh(ip), tstath(ip)); end eval(['oo_.' field_name '_mode.parameters.' name ' = xparam1(ip);']); eval(['oo_.' field_name '_std_at_mode.parameters.' name ' = stdh(ip);']); @@ -84,14 +84,14 @@ if nvx disp(tit1) for i=1:nvx k = estim_params_.var_exo(i,1); - name = deblank(M_.exo_names(k,:)); + name = M_.exo_names{k}; if strcmp(field_name,'posterior') fprintf('%-*s %7.3f %8.4f %7.4f %4s %6.4f \n', ... - header_width,name,bayestopt_.p1(ip),xparam1(ip), ... - stdh(ip),pnames(bayestopt_.pshape(ip)+1,:), ... + header_width, name, bayestopt_.p1(ip), xparam1(ip), ... + stdh(ip), pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p2(ip)); else - fprintf('%-*s %8.4f %7.4f %7.4f \n',header_width,name,xparam1(ip),stdh(ip),tstath(ip)); + fprintf('%-*s %8.4f %7.4f %7.4f \n', header_width, name, xparam1(ip), stdh(ip), tstath(ip)); end M_.Sigma_e(k,k) = xparam1(ip)*xparam1(ip); eval(['oo_.' field_name '_mode.shocks_std.' name ' = xparam1(ip);']); @@ -108,12 +108,13 @@ if nvn name = options_.varobs{estim_params_.nvn_observable_correspondence(i,1)}; if strcmp(field_name,'posterior') fprintf('%-*s %7.3f %8.4f %7.4f %4s %6.4f \n', ... - header_width,name,bayestopt_.p1(ip), ... - xparam1(ip),stdh(ip), ... - pnames(bayestopt_.pshape(ip)+1,:), ... + header_width, name, bayestopt_.p1(ip), ... + xparam1(ip), stdh(ip), ... + pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p2(ip)); else - fprintf('%-*s %8.4f %7.4f %7.4f \n',header_width,name,xparam1(ip),stdh(ip),tstath(ip)) + fprintf('%-*s %8.4f %7.4f %7.4f \n', header_width, name, xparam1(ip), ... + stdh(ip), tstath(ip)) end eval(['oo_.' field_name '_mode.measurement_errors_std.' name ' = xparam1(ip);']); eval(['oo_.' field_name '_std_at_mode.measurement_errors_std.' name ' = stdh(ip);']); @@ -129,14 +130,15 @@ if ncx for i=1:ncx k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))]; - NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - if strcmp(field_name,'posterior') + name = sprintf('%s,%s', M_.exo_names{k1}, M_.exo_names{k2}); + NAME = sprintf('%s_%s', M_.exo_names{k1}, M_.exo_names{k2}); + if strcmp(field_name, 'posterior') fprintf('%-*s %7.3f %8.4f %7.4f %4s %6.4f \n', ... - header_width,name,bayestopt_.p1(ip),xparam1(ip),stdh(ip), ... - pnames(bayestopt_.pshape(ip)+1,:), bayestopt_.p2(ip)); + header_width, name, bayestopt_.p1(ip), xparam1(ip), stdh(ip), ... + pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p2(ip)); else - fprintf('%-*s %8.4f %7.4f %7.4f \n', header_width,name,xparam1(ip),stdh(ip),tstath(ip)); + fprintf('%-*s %8.4f %7.4f %7.4f \n', header_width,name, xparam1(ip), ... + stdh(ip), tstath(ip)); end M_.Sigma_e(k1,k2) = xparam1(ip)*sqrt(M_.Sigma_e(k1,k1)*M_.Sigma_e(k2,k2)); M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2); @@ -154,14 +156,15 @@ if ncn for i=1:ncn k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))]; - NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; + name = sprintf('%s,%s', M_.endo_names{k1}, M_.endo_names{k2}); + NAME = sprintf('%s_%s', M_.endo_names{k1}, M_.endo_names{k2}); if strcmp(field_name,'posterior') fprintf('%-*s %7.3f %8.4f %7.4f %4s %6.4f \n', ... - header_width,name,bayestopt_.p1(ip),xparam1(ip),stdh(ip), ... - pnames(bayestopt_.pshape(ip)+1,:), bayestopt_.p2(ip)); + header_width, name, bayestopt_.p1(ip), xparam1(ip), stdh(ip), ... + pnames{bayestopt_.pshape(ip)+1}, bayestopt_.p2(ip)); else - fprintf('%-*s %8.4f %7.4f %7.4f \n',header_width,name,xparam1(ip),stdh(ip),tstath(ip)); + fprintf('%-*s %8.4f %7.4f %7.4f \n',header_width, name, xparam1(ip), ... + stdh(ip), tstath(ip)); end eval(['oo_.' field_name '_mode.measurement_errors_corr.' NAME ' = xparam1(ip);']); eval(['oo_.' field_name '_std_at_mode.measurement_errors_corr.' NAME ' = stdh(ip);']); @@ -169,6 +172,7 @@ if ncn end skipline() end + if any(xparam1(1:nvx+nvn)<0) warning('Some estimated standard deviations are negative. Dynare internally works with variances so that the sign does not matter. Nevertheless, it is recommended to impose either prior restrictions (Bayesian Estimation) or a lower bound (ML) to assure positive values.') end @@ -183,11 +187,11 @@ if any(bayestopt_.pshape > 0) && options_.TeX %% Bayesian estimation (posterior ip = nvx+nvn+ncx+ncn+1; for i=1:np fprintf(fidTeX,'$%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n',... - M_.param_names_tex(estim_params_.param_vals(i,1),:),... - deblank(pnames(bayestopt_.pshape(ip)+1,:)),... - bayestopt_.p1(ip),... - bayestopt_.p2(ip),... - xparam1(ip),... + M_.param_names_tex{estim_params_.param_vals(i,1)}, ... + pnames{bayestopt_.pshape(ip)+1}, ... + bayestopt_.p1(ip), ... + bayestopt_.p2(ip), ... + xparam1(ip), ... stdh(ip)); ip = ip + 1; end @@ -201,8 +205,8 @@ if any(bayestopt_.pshape > 0) && options_.TeX %% Bayesian estimation (posterior for i=1:nvx k = estim_params_.var_exo(i,1); fprintf(fidTeX,[ '$%s$ & %4s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n'],... - deblank(M_.exo_names_tex(k,:)),... - deblank(pnames(bayestopt_.pshape(ip)+1,:)),... + M_.exo_names_tex{k},... + pnames{bayestopt_.pshape(ip)+1},... bayestopt_.p1(ip),... bayestopt_.p2(ip),... xparam1(ip), ... @@ -217,10 +221,10 @@ if any(bayestopt_.pshape > 0) && options_.TeX %% Bayesian estimation (posterior TeXBegin_Bayesian(fidTeX,3,'standard deviation of measurement errors') ip = nvx+1; for i=1:nvn - idx = strmatch(options_.varobs{estim_params_.nvn_observable_correspondence(i,1)},M_.endo_names); + idx = strmatch(options_.varobs{estim_params_.nvn_observable_correspondence(i,1)}, M_.endo_names); fprintf(fidTeX,'$%s$ & %4s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n',... - deblank(M_.endo_names_tex(idx,:)), ... - deblank(pnames(bayestopt_.pshape(ip)+1,:)), ... + M_.endo_names_tex{idx}, ... + pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p1(ip), ... bayestopt_.p2(ip),... xparam1(ip),... @@ -238,8 +242,8 @@ if any(bayestopt_.pshape > 0) && options_.TeX %% Bayesian estimation (posterior k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); fprintf(fidTeX,[ '$%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n'],... - [deblank(M_.exo_names_tex(k1,:)) ',' deblank(M_.exo_names_tex(k2,:))], ... - deblank(pnames(bayestopt_.pshape(ip)+1,:)), ... + [M_.exo_names_tex{k1} ',' M_.exo_names_tex{k2}], ... + pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p1(ip), ... bayestopt_.p2(ip), ... xparam1(ip), ... @@ -257,8 +261,8 @@ if any(bayestopt_.pshape > 0) && options_.TeX %% Bayesian estimation (posterior k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); fprintf(fidTeX,'$%s$ & %s & %7.3f & %6.4f & %8.4f & %7.4f \\\\ \n',... - [deblank(M_.endo_names_tex(k1,:)) ',' deblank(M_.endo_names_tex(k2,:))], ... - pnames(bayestopt_.pshape(ip)+1,:), ... + [ M_.endo_names_tex{k1} ',' M_.endo_names_tex{k2}], ... + pnames{bayestopt_.pshape(ip)+1}, ... bayestopt_.p1(ip), ... bayestopt_.p2(ip), ... xparam1(ip), ... @@ -270,14 +274,14 @@ if any(bayestopt_.pshape > 0) && options_.TeX %% Bayesian estimation (posterior elseif all(bayestopt_.pshape == 0) && options_.TeX %% MLE and GMM Latex output if np filename = [OutputDirectoryName '/' M_.fname '_' LaTeXtitle '_Mode_1.tex']; - fidTeX = fopen(filename,'w'); - TeXBegin_ML(fidTeX,1,'parameters',table_title,LaTeXtitle) + fidTeX = fopen(filename, 'w'); + TeXBegin_ML(fidTeX, 1, 'parameters', table_title, LaTeXtitle) ip = nvx+nvn+ncx+ncn+1; for i=1:np fprintf(fidTeX,'$%s$ & %8.4f & %7.4f & %7.4f\\\\ \n',... - M_.param_names_tex(estim_params_.param_vals(i,1),:),... - xparam1(ip),... - stdh(ip),... + M_.param_names_tex{estim_params_.param_vals(i,1)}, ... + xparam1(ip), ... + stdh(ip), ... tstath(ip)); ip = ip + 1; end @@ -285,15 +289,15 @@ elseif all(bayestopt_.pshape == 0) && options_.TeX %% MLE and GMM Latex output end if nvx filename = [OutputDirectoryName '/' M_.fname '_' LaTeXtitle '_Mode_2.tex']; - fidTeX = fopen(filename,'w'); - TeXBegin_ML(fidTeX,2,'standard deviation of structural shocks',table_title,LaTeXtitle) + fidTeX = fopen(filename, 'w'); + TeXBegin_ML(fidTeX, 2, 'standard deviation of structural shocks', table_title, LaTeXtitle) ip = 1; for i=1:nvx k = estim_params_.var_exo(i,1); - fprintf(fidTeX,[ '$%s$ & %8.4f & %7.4f & %7.4f\\\\ \n'],... - deblank(M_.exo_names_tex(k,:)),... + fprintf(fidTeX,[ '$%s$ & %8.4f & %7.4f & %7.4f\\\\ \n'], ... + M_.exo_names_tex{k}, ... xparam1(ip), ... - stdh(ip),... + stdh(ip), ... tstath(ip)); ip = ip+1; end @@ -301,15 +305,15 @@ elseif all(bayestopt_.pshape == 0) && options_.TeX %% MLE and GMM Latex output end if nvn filename = [OutputDirectoryName '/' M_.fname '_' LaTeXtitle '_Mode_3.tex']; - fidTeX = fopen(filename,'w'); - TeXBegin_ML(fidTeX,3,'standard deviation of measurement errors',table_title,LaTeXtitle) + fidTeX = fopen(filename, 'w'); + TeXBegin_ML(fidTeX, 3, 'standard deviation of measurement errors', table_title, LaTeXtitle) ip = nvx+1; for i=1:nvn - idx = strmatch(options_.varobs{estim_params_.nvn_observable_correspondence(i,1)},M_.endo_names); - fprintf(fidTeX,'$%s$ & %8.4f & %7.4f & %7.4f \\\\ \n',... - deblank(M_.endo_names_tex(idx,:)), ... - xparam1(ip),... - stdh(ip),... + idx = strmatch(options_.varobs{estim_params_.nvn_observable_correspondence(i,1)}, M_.endo_names); + fprintf(fidTeX, '$%s$ & %8.4f & %7.4f & %7.4f \\\\ \n', ... + M_.endo_names_tex{idx}, ... + xparam1(ip), ... + stdh(ip), ... tstath(ip)); ip = ip+1; end @@ -317,16 +321,16 @@ elseif all(bayestopt_.pshape == 0) && options_.TeX %% MLE and GMM Latex output end if ncx filename = [OutputDirectoryName '/' M_.fname '_' LaTeXtitle '_Mode_4.tex']; - fidTeX = fopen(filename,'w'); - TeXBegin_ML(fidTeX,4,'correlation of structural shocks',table_title,LaTeXtitle) + fidTeX = fopen(filename, 'w'); + TeXBegin_ML(fidTeX, 4, 'correlation of structural shocks', table_title,LaTeXtitle) ip = nvx+nvn+1; for i=1:ncx k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - fprintf(fidTeX,[ '$%s$ & %8.4f & %7.4f & %7.4f \\\\ \n'],... - [deblank(M_.exo_names_tex(k1,:)) ',' deblank(M_.exo_names_tex(k2,:))], ... + fprintf(fidTeX,[ '$%s$ & %8.4f & %7.4f & %7.4f \\\\ \n'], ... + [M_.exo_names_tex{k1} ',' M_.exo_names_tex{k2}], ... xparam1(ip), ... - stdh(ip),... + stdh(ip), ... tstath(ip)); ip = ip+1; end @@ -334,16 +338,16 @@ elseif all(bayestopt_.pshape == 0) && options_.TeX %% MLE and GMM Latex output end if ncn filename = [OutputDirectoryName '/' M_.fname '_' LaTeXtitle '_Mode_5.tex']; - fidTeX = fopen(filename,'w'); - TeXBegin_ML(fidTeX,5,'correlation of measurement errors',table_title,LaTeXtitle) + fidTeX = fopen(filename, 'w'); + TeXBegin_ML(fidTeX, 5, 'correlation of measurement errors', table_title, LaTeXtitle) ip = nvx+nvn+ncx+1; for i=1:ncn k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - fprintf(fidTeX,'$%s$ & %8.4f & %7.4f & %7.4f \\\\ \n',... - [deblank(M_.endo_names_tex(k1,:)) ',' deblank(M_.endo_names_tex(k2,:))], ... + fprintf(fidTeX, '$%s$ & %8.4f & %7.4f & %7.4f \\\\ \n', ... + [ M_.endo_names_tex{k1} ',' M_.endo_names_tex{k2}], ... xparam1(ip), ... - stdh(ip),... + stdh(ip), ... tstath(ip)); ip = ip+1; end @@ -355,7 +359,7 @@ end %% subfunctions: % -function TeXBegin_Bayesian(fid,fnum,title) +function TeXBegin_Bayesian(fid, fnum, title) fprintf(fid,'%% TeX-table generated by dynare_estimation (Dynare).\n'); fprintf(fid,['%% RESULTS FROM POSTERIOR MAXIMIZATION (' title ')\n']); fprintf(fid,['%% ' datestr(now,0)]); @@ -379,7 +383,7 @@ fprintf(fid,'\\midrule \\endhead \n'); fprintf(fid,'\\bottomrule \\multicolumn{6}{r}{(Continued on next page)}\\endfoot \n'); fprintf(fid,'\\bottomrule\\endlastfoot \n'); -function TeXBegin_ML(fid,fnum,title,table_title,LaTeXtitle) +function TeXBegin_ML(fid, fnum, title, table_title, LaTeXtitle) fprintf(fid,'%% TeX-table generated by dynare_estimation (Dynare).\n'); fprintf(fid,['%% RESULTS FROM ' table_title ' MAXIMIZATION (' title ')\n']); fprintf(fid,['%% ' datestr(now,0)]); diff --git a/matlab/display_problematic_vars_Jacobian.m b/matlab/display_problematic_vars_Jacobian.m index 310b37fa5..2eca7173b 100644 --- a/matlab/display_problematic_vars_Jacobian.m +++ b/matlab/display_problematic_vars_Jacobian.m @@ -16,7 +16,7 @@ function []=display_problematic_vars_Jacobian(problemrow,problemcol,M_,x,type,ca % none. % -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -55,84 +55,98 @@ if strcmp(type,'dynamic') end if problemcol(ii)<=max(max(M_.lead_lag_incidence)) && var_index<=M_.orig_endo_nbr if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - fprintf('Derivative of Auxiliary Equation %d with respect to %s Variable %s (initial value of %s: %g) \n',eq_nbr,type_string,deblank(M_.endo_names(var_index,:)),deblank(M_.endo_names(var_index,:)),x(var_index)) + eq_nbr = problemrow(ii); + fprintf('Derivative of Auxiliary Equation %d with respect to %s Variable %s (initial value of %s: %g) \n', ... + eq_nbr, type_string, M_.endo_names{var_index}, M_.endo_names{var_index}, x(var_index)); else - eq_nbr=problemrow(ii)-aux_eq_nbr; - fprintf('Derivative of Equation %d with respect to %s Variable %s (initial value of %s: %g) \n',eq_nbr,type_string,deblank(M_.endo_names(var_index,:)),deblank(M_.endo_names(var_index,:)),x(var_index)) + eq_nbr = problemrow(ii)-aux_eq_nbr; + fprintf('Derivative of Equation %d with respect to %s Variable %s (initial value of %s: %g) \n', ... + eq_nbr, type_string, M_.endo_names{var_index}, M_.endo_names{var_index}, x(var_index)); end - elseif problemcol(ii)<=max(max(M_.lead_lag_incidence)) && var_index>M_.orig_endo_nbr %auxiliary vars - if M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).type ==6 %Ramsey Lagrange Multiplier - if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - fprintf('Derivative of Auxiliary Equation %d with respect to %s of Langrange multiplier of equation %s (initial value: %g) \n',eq_nbr,type_string,M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr,x(problemcol(ii))) + elseif problemcol(ii)<=max(max(M_.lead_lag_incidence)) && var_index>M_.orig_endo_nbr % auxiliary vars + if M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).type==6 %Ramsey Lagrange Multiplier + if problemrow(ii)<=aux_eq_nbr + eq_nbr = problemrow(ii); + fprintf('Derivative of Auxiliary Equation %d with respect to %s of Langrange multiplier of equation %s (initial value: %g) \n', ... + eq_nbr, type_string, M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr, x(problemcol(ii))); + else + eq_nbr = problemrow(ii)-aux_eq_nbr; + fprintf('Derivative of Equation %d with respect to %s of Langrange multiplier of equation %s (initial value: %g) \n', ... + eq_nbr, type_string, M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr, x(problemcol(ii))); + end else - eq_nbr=problemrow(ii)-aux_eq_nbr; - fprintf('Derivative of Equation %d with respect to %s of Langrange multiplier of equation %s (initial value: %g) \n',eq_nbr,type_string,M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr,x(problemcol(ii))) + if problemrow(ii)<=aux_eq_nbr + eq_nbr = problemrow(ii); + orig_var_index = M_.aux_vars(1,var_index-M_.orig_endo_nbr).orig_index; + fprintf('Derivative of Auxiliary Equation %d with respect to %s Variable %s (initial value of %s: %g) \n', ... + eq_nbr, type_string, M_.endo_names{orig_var_index}, M_.endo_names{orig_var_index}, x(orig_var_index)); + else + eq_nbr = problemrow(ii)-aux_eq_nbr; + orig_var_index = M_.aux_vars(1,var_index-M_.orig_endo_nbr).orig_index; + fprintf('Derivative of Equation %d with respect to %s Variable %s (initial value of %s: %g) \n', ... + eq_nbr, type_string, M_.endo_names{orig_var_index}, M_.endo_names{orig_var_index}, x(orig_var_index)); + end end - else - if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - orig_var_index=M_.aux_vars(1,var_index-M_.orig_endo_nbr).orig_index; - fprintf('Derivative of Auxiliary Equation %d with respect to %s Variable %s (initial value of %s: %g) \n',eq_nbr,type_string,deblank(M_.endo_names(orig_var_index,:)),deblank(M_.endo_names(orig_var_index,:)),x(orig_var_index)) - else - eq_nbr=problemrow(ii)-aux_eq_nbr; - orig_var_index=M_.aux_vars(1,var_index-M_.orig_endo_nbr).orig_index; - fprintf('Derivative of Equation %d with respect to %s Variable %s (initial value of %s: %g) \n',eq_nbr,type_string,deblank(M_.endo_names(orig_var_index,:)),deblank(M_.endo_names(orig_var_index,:)),x(orig_var_index)) - end - end elseif problemcol(ii)>max(max(M_.lead_lag_incidence)) && var_index<=M_.exo_nbr if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - fprintf('Derivative of Auxiliary Equation %d with respect to %s shock %s \n',eq_nbr,type_string,deblank(M_.exo_names(var_index,:))); + eq_nbr = problemrow(ii); + fprintf('Derivative of Auxiliary Equation %d with respect to %s shock %s \n', ... + eq_nbr, type_string, M_.exo_names{var_index}); else - eq_nbr=problemrow(ii)-aux_eq_nbr; - fprintf('Derivative of Equation %d with respect to %s shock %s \n',eq_nbr,type_string,deblank(M_.exo_names(var_index,:))); + eq_nbr = problemrow(ii)-aux_eq_nbr; + fprintf('Derivative of Equation %d with respect to %s shock %s \n', ... + eq_nbr, type_string, M_.exo_names{var_index}); end else error('display_problematic_vars_Jacobian:: The error should not happen. Please contact the developers') end end - fprintf('\n%s The problem most often occurs, because a variable with\n',caller_string) - fprintf('%s exponent smaller than 1 has been initialized to 0. Taking the derivative\n',caller_string) - fprintf('%s and evaluating it at the steady state then results in a division by 0.\n',caller_string) - fprintf('%s If you are using model-local variables (# operator), check their values as well.\n',caller_string) -elseif strcmp(type,'static') + fprintf('\n%s The problem most often occurs, because a variable with\n', caller_string) + fprintf('%s exponent smaller than 1 has been initialized to 0. Taking the derivative\n', caller_string) + fprintf('%s and evaluating it at the steady state then results in a division by 0.\n', caller_string) + fprintf('%s If you are using model-local variables (# operator), check their values as well.\n', caller_string) +elseif strcmp(type, 'static') for ii=1:length(problemrow) if problemcol(ii)<=M_.orig_endo_nbr if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - fprintf('Derivative of Auxiliary Equation %d with respect to Variable %s (initial value of %s: %g) \n',eq_nbr,deblank(M_.endo_names(problemcol(ii),:)),deblank(M_.endo_names(problemcol(ii),:)),x(problemcol(ii))) + eq_nbr = problemrow(ii); + fprintf('Derivative of Auxiliary Equation %d with respect to Variable %s (initial value of %s: %g) \n', ... + eq_nbr, M_.endo_names{problemcol(ii)}, M_.endo_names{problemcol(ii)}, x(problemcol(ii))); else - eq_nbr=problemrow(ii)-aux_eq_nbr; - fprintf('Derivative of Equation %d with respect to Variable %s (initial value of %s: %g) \n',eq_nbr,deblank(M_.endo_names(problemcol(ii),:)),deblank(M_.endo_names(problemcol(ii),:)),x(problemcol(ii))) + eq_nbr = problemrow(ii)-aux_eq_nbr; + fprintf('Derivative of Equation %d with respect to Variable %s (initial value of %s: %g) \n', ... + eq_nbr, M_.endo_names{problemcol(ii)}, M_.endo_names{problemcol(ii)}, x(problemcol(ii))); end else %auxiliary vars if M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).type ==6 %Ramsey Lagrange Multiplier if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - fprintf('Derivative of Auxiliary Equation %d with respect to Lagrange multiplier of equation %d (initial value: %g) \n',eq_nbr,M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr,x(problemcol(ii))) + eq_nbr = problemrow(ii); + fprintf('Derivative of Auxiliary Equation %d with respect to Lagrange multiplier of equation %d (initial value: %g) \n', ... + eq_nbr, M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr, x(problemcol(ii))); else - eq_nbr=problemrow(ii)-aux_eq_nbr; - fprintf('Derivative of Equation %d with respect to Lagrange multiplier of equation %d (initial value: %g) \n',eq_nbr,M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr,x(problemcol(ii))) + eq_nbr = problemrow(ii)-aux_eq_nbr; + fprintf('Derivative of Equation %d with respect to Lagrange multiplier of equation %d (initial value: %g) \n', ... + eq_nbr, M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).eq_nbr, x(problemcol(ii))); end else if problemrow(ii)<=aux_eq_nbr - eq_nbr=problemrow(ii); - orig_var_index=M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).orig_index; - fprintf('Derivative of Auxiliary Equation %d with respect to Variable %s (initial value of %s: %g) \n',eq_nbr,deblank(M_.endo_names(orig_var_index,:)),deblank(M_.endo_names(orig_var_index,:)),x(problemcol(ii))) + eq_nbr = problemrow(ii); + orig_var_index = M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).orig_index; + fprintf('Derivative of Auxiliary Equation %d with respect to Variable %s (initial value of %s: %g) \n', ... + eq_nbr, M_.endo_names{orig_var_index}, M_.endo_names{orig_var_index}, x(problemcol(ii))); else - eq_nbr=problemrow(ii)-aux_eq_nbr; - orig_var_index=M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).orig_index; - fprintf('Derivative of Equation %d with respect to Variable %s (initial value of %s: %g) \n',eq_nbr,deblank(M_.endo_names(orig_var_index,:)),deblank(M_.endo_names(orig_var_index,:)),x(problemcol(ii))) + eq_nbr = problemrow(ii)-aux_eq_nbr; + orig_var_index = M_.aux_vars(1,problemcol(ii)-M_.orig_endo_nbr).orig_index; + fprintf('Derivative of Equation %d with respect to Variable %s (initial value of %s: %g) \n', ... + eq_nbr, M_.endo_names{orig_var_index}, M_.endo_names{orig_var_index}, x(problemcol(ii))); end end end end - fprintf('\n%s The problem most often occurs, because a variable with\n',caller_string) - fprintf('%s exponent smaller than 1 has been initialized to 0. Taking the derivative\n',caller_string) - fprintf('%s and evaluating it at the steady state then results in a division by 0.\n',caller_string) - fprintf('%s If you are using model-local variables (# operator), check their values as well.\n',caller_string) + fprintf('\n%s The problem most often occurs, because a variable with\n', caller_string) + fprintf('%s exponent smaller than 1 has been initialized to 0. Taking the derivative\n', caller_string) + fprintf('%s and evaluating it at the steady state then results in a division by 0.\n', caller_string) + fprintf('%s If you are using model-local variables (# operator), check their values as well.\n', caller_string) else error('Unknown Type') end \ No newline at end of file diff --git a/matlab/dsge_var_likelihood.m b/matlab/dsge_var_likelihood.m index 9878d19c9..d68ed2149 100644 --- a/matlab/dsge_var_likelihood.m +++ b/matlab/dsge_var_likelihood.m @@ -37,7 +37,7 @@ function [fval,info,exit_flag,grad,hess,SteadyState,trend_coeff,PHI_tilde,SIGMA_ % SPECIAL REQUIREMENTS % None. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -73,7 +73,7 @@ xparam1 = xparam1(:); % Initialization of of the index for parameter dsge_prior_weight in Model.params. if isempty(dsge_prior_weight_idx) - dsge_prior_weight_idx = strmatch('dsge_prior_weight',Model.param_names); + dsge_prior_weight_idx = strmatch('dsge_prior_weight', Model.param_names); end % Get the number of estimated (dsge) parameters. diff --git a/matlab/dyn2vec.m b/matlab/dyn2vec.m index 50e62b4f1..aabb976b1 100644 --- a/matlab/dyn2vec.m +++ b/matlab/dyn2vec.m @@ -14,7 +14,7 @@ function [z,zss]=dyn2vec(s1,s2) % none % -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -46,15 +46,15 @@ if nargin == 0 error(t); end for i=1:size(oo_.endo_simul,1) - assignin('base',deblank(M_.endo_names(i,:)),oo_.endo_simul(i,k)'); + assignin('base', M_.endo_names{i}, oo_.endo_simul(i,k)'); end return else - j = strmatch(s1,M_.endo_names,'exact'); + j = strmatch(s1, M_.endo_names, 'exact'); if ~ isempty(j) z = oo_.endo_simul(j,k)'; else - j = strmatch(s1,M_.exo_names,'exact'); + j = strmatch(s1, M_.exo_names, 'exact'); if ~ isempty(j) if options_.smpl == 0 z = oo_.exo_simul(:,j); diff --git a/matlab/dyn_forecast.m b/matlab/dyn_forecast.m index a58b126a1..69e78d54a 100644 --- a/matlab/dyn_forecast.m +++ b/matlab/dyn_forecast.m @@ -21,7 +21,7 @@ function [forecast,info] = dyn_forecast(var_list,M,options,oo,task,dataset_info) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -52,13 +52,13 @@ maximum_lag = M.maximum_lag; endo_names = M.endo_names; if isempty(var_list) - var_list = endo_names(1:M.orig_endo_nbr, :); + var_list = endo_names(1:M.orig_endo_nbr); end i_var = []; -for i = 1:size(var_list) - tmp = strmatch(var_list(i,:),endo_names,'exact'); +for i = 1:length(var_list) + tmp = strmatch(var_list{i}, endo_names, 'exact'); if isempty(tmp) - error([var_list(i,:) ' isn''t an endogenous variable']) + error([var_list{i} ' isn''t an endogenous variable']) end i_var = [i_var; tmp]; end @@ -90,7 +90,7 @@ switch task y_smoothed = oo.SmoothedVariables; y0 = zeros(M.endo_nbr,maximum_lag); for i = 1:M.endo_nbr - v_name = deblank(M.endo_names(i,:)); + v_name = M.endo_names{i}; y0(i,:) = y_smoothed.(v_name)(end-maximum_lag+1:end); %includes steady state or mean, but simult_ will subtract only steady state % 2. Subtract mean/steady state and add steady state; takes care of prefiltering if isfield(oo.Smoother,'Constant') && isfield(oo.Smoother.Constant,v_name) @@ -98,7 +98,7 @@ switch task if options.loglinear y0(i,:)=y0(i,:)+log_variable(i,oo.dr.ys,M); else - y0(i,:)=y0(i,:)+oo.dr.ys(strmatch(v_name,deblank(M.endo_names),'exact')); + y0(i,:)=y0(i,:)+oo.dr.ys(strmatch(v_name, M.endo_names, 'exact')); end end % 2. Subtract trend @@ -114,8 +114,8 @@ switch task i_var_obs = []; trend_coeffs = []; for i=1:length(var_obs) - tmp = strmatch(var_obs{i},endo_names(i_var,:),'exact'); - trend_var_index=strmatch(var_obs{i},M.endo_names,'exact'); + tmp = strmatch(var_obs{i}, endo_names(i_var), 'exact'); + trend_var_index = strmatch(var_obs{i}, M.endo_names, 'exact'); if ~isempty(tmp) i_var_obs = [ i_var_obs; tmp]; trend_coeffs = [trend_coeffs; oo.Smoother.TrendCoeffs(trend_var_index)]; @@ -175,21 +175,21 @@ else end for i=1:n_var - vname = deblank(var_list(i,:)); + vname = var_list{i}; forecast.Mean.(vname) = yf(i,maximum_lag+(1:horizon))'; forecast.HPDinf.(vname)= yf(i,maximum_lag+(1:horizon))' - int_width(1:horizon,i); forecast.HPDsup.(vname) = yf(i,maximum_lag+(1:horizon))' + int_width(1:horizon,i); - if ~isequal(M.H,0) && ismember(var_list(i,:),options.varobs) + if ~isequal(M.H,0) && ismember(var_list{i},options.varobs) forecast.HPDinf_ME.(vname)= yf(i,maximum_lag+(1:horizon))' - int_width_ME(1:horizon,i); forecast.HPDsup_ME.(vname) = yf(i,maximum_lag+(1:horizon))' + int_width_ME(1:horizon,i); end end for i=1:M.exo_det_nbr - forecast.Exogenous.(deblank(M.exo_det_names(i,:))) = oo.exo_det_simul(maximum_lag+(1:horizon),i); + forecast.Exogenous.(M.exo_det_names{i}) = oo.exo_det_simul(maximum_lag+(1:horizon),i); end if options.nograph == 0 oo.forecast = forecast; - forecast_graphs(var_list,M, oo,options) + forecast_graphs(var_list, M, oo, options) end diff --git a/matlab/dyn_latex_table.m b/matlab/dyn_latex_table.m index 8cfdc6e53..8a614b62b 100644 --- a/matlab/dyn_latex_table.m +++ b/matlab/dyn_latex_table.m @@ -1,7 +1,8 @@ -function dyn_latex_table(M_,options_,title,LaTeXtitle,headers,labels,values,label_width,val_width,val_precis,optional_header) +function dyn_latex_table(M_, options_, title, LaTeXtitle, headers, labels, values, label_width, val_width, val_precis, optional_header) + %function dyn_latex_table(M_,options_,title,LaTeXtitle,headers,labels,values,label_width,val_width,val_precis,optional_header) -% Copyright (C) 2015-2017 Dynare Team +% Copyright (C) 2015-2018 Dynare Team % % This file is part of Dynare. % @@ -24,16 +25,15 @@ end OutputDirectoryName = CheckPath('Output',M_.dname); -%% get width of label column -if ~isempty(label_width) - label_width = max(size(deblank(char(headers(1,:),labels)),2)+2, ... - label_width); -else %use default length - label_width = max(size(deblank(char(headers(1,:),labels)),2))+2; +% Set width of label column +if isempty(label_width) + label_width = cellofchararraymaxlength(vertcat(headers{1}, labels))+2; +else + label_width = max(cellofchararraymaxlength(vertcat(headers{1}, labels))+2, label_width); end -label_format_leftbound = sprintf('$%%-%ds$',label_width); +label_format_leftbound = sprintf('$%%-%ds$', label_width); -%% get width of label column +% Set width of other columns if all(~isfinite(values)) values_length = 4; else @@ -42,66 +42,64 @@ end if any(values) < 0 %add one character for minus sign values_length = values_length+1; end - -%% get width of header strings -headers_length = max(size(deblank(headers(2:end,:)),2)); -if ~isempty(val_width) - val_width = max(max(headers_length,values_length)+4,val_width); +headers_length = cellofchararraymaxlength(headers(2:end)); +if isempty(val_width) + val_width = max(headers_length, values_length)+4; else - val_width = max(headers_length,values_length)+4; + val_width = max(max(headers_length, values_length)+4, val_width); end -value_format = sprintf('%%%d.%df',val_width,val_precis); -header_string_format = sprintf('$%%%ds$',val_width); +value_format = sprintf('%%%d.%df', val_width, val_precis); +header_string_format = sprintf('$%%%ds$', val_width); -%Create and print header string -if length(headers) > 0 - header_string = sprintf(label_format_leftbound ,strrep(deblank(headers(1,:)),'\','\\')); - header_code_string='l'; - for i=2:size(headers,1) - header_string = [header_string '\t & \t ' sprintf(header_string_format,strrep(deblank(headers(i,:)),'\','\\'))]; - header_code_string= [header_code_string 'c']; +% Create and print header string +if length(headers)>0 + header_string = sprintf(label_format_leftbound, strrep(headers{1}, '\', '\\')); + header_code_string = 'l'; + for i=2:length(headers) + header_string = [header_string '\t & \t ' sprintf(header_string_format, strrep(headers{i},'\','\\'))]; + header_code_string = [header_code_string 'c']; end end -header_string=[header_string '\\\\\n']; +header_string = [header_string '\\\\\n']; filename = [OutputDirectoryName '/' M_.fname '_' LaTeXtitle '.tex']; fidTeX = fopen(filename,'w'); stack = dbstack; -fprintf(fidTeX,['%% ' datestr(now,0) ', created by ' stack(2).file]); -fprintf(fidTeX,' \n'); -fprintf(fidTeX,' \n'); -fprintf(fidTeX,'\\begin{center}\n'); -fprintf(fidTeX,['\\begin{longtable}{%s} \n'],header_code_string); -fprintf(fidTeX,['\\caption{',title,'}\\\\\n ']); +fprintf(fidTeX, ['%% ' datestr(now,0) ', created by ' stack(2).file]); +fprintf(fidTeX, ' \n'); +fprintf(fidTeX, ' \n'); +fprintf(fidTeX, '\\begin{center}\n'); +fprintf(fidTeX, ['\\begin{longtable}{%s} \n'], header_code_string); +fprintf(fidTeX, ['\\caption{',title,'}\\\\\n ']); -fprintf(fidTeX,['\\label{Table:',LaTeXtitle,'}\\\\\n']); -fprintf(fidTeX,'\\toprule \n'); +fprintf(fidTeX, ['\\label{Table:',LaTeXtitle,'}\\\\\n']); +fprintf(fidTeX, '\\toprule \n'); if nargin==11 - for ii=1:size(optional_header,1) + for ii = 1:length(optional_header) fprintf(fidTeX,'%s\n',optional_header{ii}); end end -fprintf(fidTeX,header_string); -fprintf(fidTeX,'\\midrule \\endfirsthead \n'); -fprintf(fidTeX,'\\caption{(continued)}\\\\\n '); -fprintf(fidTeX,'\\toprule \\\\ \n'); +fprintf(fidTeX, header_string); +fprintf(fidTeX, '\\midrule \\endfirsthead \n'); +fprintf(fidTeX, '\\caption{(continued)}\\\\\n '); +fprintf(fidTeX, '\\toprule \\\\ \n'); if nargin==11 - for ii=1:size(optional_header,1) - fprintf(fidTeX,'%s\n',optional_header{ii}); + for ii = 1:length(optional_header) + fprintf(fidTeX, '%s\n', optional_header{ii}); end end -fprintf(fidTeX,header_string); -fprintf(fidTeX,'\\midrule \\endhead \n'); -fprintf(fidTeX,['\\midrule \\multicolumn{',num2str(size(headers,1)),'}{r}{(Continued on next page)} \\\\ \\bottomrule \\endfoot \n']); -fprintf(fidTeX,'\\bottomrule \\endlastfoot \n'); -for i=1:size(values,1) - fprintf(fidTeX,label_format_leftbound,deblank(labels(i,:))); - fprintf(fidTeX,['\t & \t' value_format],values(i,:)); - fprintf(fidTeX,' \\\\ \n'); +fprintf(fidTeX, header_string); +fprintf(fidTeX, '\\midrule \\endhead \n'); +fprintf(fidTeX, ['\\midrule \\multicolumn{',num2str(size(headers,1)),'}{r}{(Continued on next page)} \\\\ \\bottomrule \\endfoot \n']); +fprintf(fidTeX, '\\bottomrule \\endlastfoot \n'); +for i = 1:size(values,1) + fprintf(fidTeX, label_format_leftbound, labels{i}); + fprintf(fidTeX, ['\t & \t' value_format], values(i,:)); + fprintf(fidTeX, ' \\\\ \n'); end -fprintf(fidTeX,'\\end{longtable}\n '); -fprintf(fidTeX,'\\end{center}\n'); -fprintf(fidTeX,'%% End of TeX file.\n'); +fprintf(fidTeX, '\\end{longtable}\n '); +fprintf(fidTeX, '\\end{center}\n'); +fprintf(fidTeX, '%% End of TeX file.\n'); fclose(fidTeX); \ No newline at end of file diff --git a/matlab/dyn_ramsey_static.m b/matlab/dyn_ramsey_static.m index ee97f265b..c6005c48b 100644 --- a/matlab/dyn_ramsey_static.m +++ b/matlab/dyn_ramsey_static.m @@ -18,7 +18,7 @@ function [steady_state,params,check] = dyn_ramsey_static(ys_init,M,options_,oo) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -50,8 +50,7 @@ elseif options_.steadystate_flag k_inst = []; inst_nbr = size(options_.instruments,1); for i = 1:inst_nbr - k_inst = [k_inst; strmatch(options_.instruments(i,:), ... - M.endo_names,'exact')]; + k_inst = [k_inst; strmatch(options_.instruments(i,:), M.endo_names, 'exact')]; end if inst_nbr == 1 %solve for instrument, using univariate solver, starting at initial value for instrument @@ -113,8 +112,7 @@ if options_.steadystate_flag k_inst = []; instruments = options_.instruments; for i = 1:size(instruments,1) - k_inst = [k_inst; strmatch(instruments(i,:), ... - endo_names,'exact')]; + k_inst = [k_inst; strmatch(instruments(i,:), endo_names, 'exact')]; end ys_init=zeros(size(oo.steady_state)); %create starting vector for steady state computation as only instrument value is handed over ys_init(k_inst) = x; %set instrument, the only value required for steady state computation, to current value diff --git a/matlab/dyn_risky_steadystate_solver.m b/matlab/dyn_risky_steadystate_solver.m index 44e8014e3..2325e7ad0 100644 --- a/matlab/dyn_risky_steadystate_solver.m +++ b/matlab/dyn_risky_steadystate_solver.m @@ -62,7 +62,7 @@ function [dr,info] = dyn_risky_steadystate_solver(ys0,M, ... %! @end deftypefn %@eod: -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -86,7 +86,7 @@ order_var = dr.order_var; endo_nbr = M.endo_nbr; exo_nbr = M.exo_nbr; -M.var_order_endo_names = M.endo_names(dr.order_var,:); +M.var_order_endo_names = M.endo_names(dr.order_var); [junk,dr.i_fwrd_g,i_fwrd_f] = find(lead_lag_incidence(3,order_var)); dr.i_fwrd_f = i_fwrd_f; @@ -138,10 +138,10 @@ dr.ghs2 = zeros(M.endo_nbr,1); for i=1:M.endo_nbr if isfield(options,'portfolio') && options.portfolio == 1 - disp(sprintf('%16s %12.6f %12.6f',M.endo_names(i,:),ys1(i), ... + disp(sprintf('%16s %12.6f %12.6f', M.endo_names{i}, ys1(i), ... ys(i))) else - disp(sprintf('%16s %12.6f %12.6f',M.endo_names(i,:),ys(i))) + disp(sprintf('%16s %12.6f %12.6f', M.endo_names{i}, ys(i))) end end @@ -500,11 +500,11 @@ M_np = M; M_np.lead_lag_incidence = lead_lag_incidence_np; M_np.lead_lag_incidence = lead_lag_incidence_np; M_np.endo_nbr = length(v_np); -M_np.endo_names = M.endo_names(v_np,:); +M_np.endo_names = M.endo_names(v_np); dr_np = struct(); dr_np = set_state_space(dr_np,M_np,options); pm.dr_np = dr_np; -M_np.var_order_endo_names = M_np.endo_names(dr_np.order_var,:); +M_np.var_order_endo_names = M_np.endo_names(dr_np.order_var); pm.M_np = M_np; pm.i_fwrd_g = find(lead_lag_incidence_np(lead_index,dr_np.order_var)'); diff --git a/matlab/dynare_config.m b/matlab/dynare_config.m index 77237955d..7746448f9 100644 --- a/matlab/dynare_config.m +++ b/matlab/dynare_config.m @@ -1,5 +1,5 @@ -function dynareroot = dynare_config(path_to_dynare,verbose) -%function dynareroot = dynare_config(path_to_dynare) +function dynareroot = dynare_config(path_to_dynare, verbose) + % This function tests the existence of valid mex files (for qz % decomposition, solution to sylvester equation and kronecker % products...) and, if needed, add paths to the matlab versions @@ -15,7 +15,7 @@ function dynareroot = dynare_config(path_to_dynare,verbose) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m index 98ad16c32..571ea4d2a 100644 --- a/matlab/dynare_estimation.m +++ b/matlab/dynare_estimation.m @@ -12,7 +12,7 @@ function oo_recursive_=dynare_estimation(var_list,dname) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -117,16 +117,16 @@ if nnobs > 1 && horizon > 0 if isempty(var_list) var_list = endo_names; - nvar = size(endo_names,1); + nvar = length(endo_names); SelecVariables = transpose(1:nvar); else - nvar = size(var_list,1); + nvar = length(var_list); SelecVariables = []; for i=1:nvar - if ~isempty(strmatch(var_list(i,:),endo_names,'exact')) - SelecVariables = [SelecVariables;strmatch(var_list(i,:),endo_names, 'exact')]; + if ~isempty(strmatch(var_list{i}, endo_names, 'exact')) + SelecVariables = [SelecVariables; strmatch(var_list{i}, endo_names, 'exact')]; else - error(['Estimation:: ' var_list(i,:) ' isn''t an endogenous variable']) + error(['Estimation:: ' var_list{i} ' isn''t an endogenous variable']) end end end @@ -148,7 +148,7 @@ if nnobs > 1 && horizon > 0 m = 1; plot_index=0; OutputDirectoryName = CheckPath('graphs',M_.fname); - for i = 1:size(var_list,1) + for i = 1:length(var_list) if mod(i,nstar) == 1 plot_index=plot_index+1; hfig = dyn_figure(options_.nodisplay,'Name',['Out of sample forecasts (',num2str(plot_index),')']); @@ -163,7 +163,7 @@ if nnobs > 1 && horizon > 0 else offsetx = 0; end - vname = deblank(var_list(i,:)); + vname = var_list{i}; for j=1:nnobs if mh_replic > 0 oo_.RecursiveForecast.Mean.(vname)(j,:) = ... @@ -207,7 +207,7 @@ if nnobs > 1 && horizon > 0 hold off xlim([nobs(1)-offsetx nobs(end)+horizon]) m = m + 1; - if mod(i+1,nstar) == 1 || i ==size(var_list,1) + if mod(i+1,nstar) == 1 || i==length(var_list) dyn_saveas(hfig,[M_.fname,filesep,'graphs',filesep M_.fname '_RecursiveForecasts_' int2str(plot_index)],options_.nodisplay,options_.graph_format); end end diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m index df2aa31ab..49a48a3ec 100644 --- a/matlab/dynare_estimation_1.m +++ b/matlab/dynare_estimation_1.m @@ -12,7 +12,7 @@ function dynare_estimation_1(var_list_,dname) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -141,8 +141,10 @@ missing_value = dataset_info.missing.state; % Set number of observations gend = dataset_.nobs; + % Set the number of observed variables. n_varobs = length(options_.varobs); + % Get the number of parameters to be estimated. nvx = estim_params_.nvx; % Variance of the structural innovations (number of parameters). nvn = estim_params_.nvn; % Variance of the measurement innovations (number of parameters). @@ -150,8 +152,9 @@ ncx = estim_params_.ncx; % Covariance of the structural innovations (number of ncn = estim_params_.ncn; % Covariance of the measurement innovations (number of parameters). np = estim_params_.np ; % Number of deep parameters. nx = nvx+nvn+ncx+ncn+np; % Total number of parameters to be estimated. -%% Set the names of the priors. -pnames = [' '; 'beta '; 'gamm '; 'norm '; 'invg '; 'unif '; 'invg2'; ' '; 'weibl']; + +% Set the names of the priors. +pnames = {''; 'beta'; 'gamm'; 'norm'; 'invg'; 'unif'; 'invg2'; ''; 'weibl'}; dr = oo_.dr; @@ -358,7 +361,7 @@ end if any(bayestopt_.pshape > 0) && ~options_.mh_posterior_mode_estimation % display results table and store parameter estimates and standard errors in results - oo_=display_estimation_results_table(xparam1,stdh,M_,options_,estim_params_,bayestopt_,oo_,pnames,'Posterior','posterior'); + oo_ = display_estimation_results_table(xparam1, stdh, M_, options_, estim_params_, bayestopt_, oo_, pnames, 'Posterior', 'posterior'); % Laplace approximation to the marginal log density: if options_.cova_compute estim_params_nbr = size(xparam1,1); @@ -376,7 +379,7 @@ if any(bayestopt_.pshape > 0) && ~options_.mh_posterior_mode_estimation end elseif ~any(bayestopt_.pshape > 0) && ~options_.mh_posterior_mode_estimation - oo_=display_estimation_results_table(xparam1,stdh,M_,options_,estim_params_,bayestopt_,oo_,pnames,'Maximum Likelihood','mle'); + oo_=display_estimation_results_table(xparam1, stdh, M_, options_, estim_params_, bayestopt_, oo_, pnames, 'Maximum Likelihood', 'mle'); end if np > 0 @@ -563,7 +566,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha hold on plot(1:gend,innov(k,:),marker_string{2,1},'linewidth',1) hold off - name = deblank(M_.exo_names(k,:)); + name = M_.exo_names{k}; if isempty(NAMES) NAMES = name; else @@ -577,7 +580,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha xlim([1 gend]) end if options_.TeX - texname = M_.exo_names_tex(k,:); + texname = M_.exo_names_tex{k}; if isempty(TeXNAMES) TeXNAMES = ['$ ' deblank(texname) ' $']; else @@ -656,12 +659,12 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha set(gca,'XTickLabel',options_.XTickLabel) end if options_.TeX - idx = strmatch(options_.varobs{index(k)},M_.endo_names,'exact'); - texname = M_.endo_names_tex(idx,:); + idx = strmatch(options_.varobs{index(k)}, M_.endo_names, 'exact'); + texname = M_.endo_names_tex{idx}; if isempty(TeXNAMES) - TeXNAMES = ['$ ' deblank(texname) ' $']; + TeXNAMES = ['$ ' texname ' $']; else - TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']); + TeXNAMES = char(TeXNAMES,['$ ' texname ' $']); end end title(name,'Interpreter','none') @@ -731,12 +734,12 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha xlim([1 gend]) end if options_.TeX - idx = strmatch(options_.varobs{k},M_.endo_names,'exact'); - texname = M_.endo_names_tex(idx,:); + idx = strmatch(options_.varobs{k}, M_.endo_names,'exact'); + texname = M_.endo_names_tex{idx}; if isempty(TeXNAMES) - TeXNAMES = ['$ ' deblank(texname) ' $']; + TeXNAMES = ['$ ' texname ' $']; else - TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']); + TeXNAMES = char(TeXNAMES,['$ ' texname ' $']); end end title(name,'Interpreter','none') diff --git a/matlab/dynare_estimation_init.m b/matlab/dynare_estimation_init.m index b87b76873..ff809094a 100644 --- a/matlab/dynare_estimation_init.m +++ b/matlab/dynare_estimation_init.m @@ -32,7 +32,7 @@ function [dataset_, dataset_info, xparam1, hh, M_, options_, oo_, estim_params_, % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -56,7 +56,7 @@ if isempty(gsa_flag) gsa_flag = false; else % Decide if a DSGE or DSGE-VAR has to be estimated. - if ~isempty(strmatch('dsge_prior_weight',M_.param_names)) + if ~isempty(strmatch('dsge_prior_weight', M_.param_names)) options_.dsge_var = 1; end if isempty(var_list_) @@ -425,8 +425,8 @@ nspred = M_.nspred; % Number of predetermined variables in the state var_obs_index_dr = []; k1 = []; for i=1:options_.number_of_observed_variables - var_obs_index_dr = [var_obs_index_dr; strmatch(options_.varobs{i},M_.endo_names(dr.order_var,:),'exact')]; - k1 = [k1; strmatch(options_.varobs{i},M_.endo_names, 'exact')]; + var_obs_index_dr = [var_obs_index_dr; strmatch(options_.varobs{i}, M_.endo_names(dr.order_var), 'exact')]; + k1 = [k1; strmatch(options_.varobs{i}, M_.endo_names, 'exact')]; end k3 = []; @@ -437,9 +437,9 @@ if options_.selected_variables_only k3 = (1:M_.endo_nbr)'; k3p = (1:M_.endo_nbr)'; else - for i=1:size(var_list_,1) - k3 = [k3; strmatch(var_list_(i,:),M_.endo_names(dr.order_var,:), 'exact')]; - k3p = [k3; strmatch(var_list_(i,:),M_.endo_names, 'exact')]; + for i=1:length(var_list_) + k3 = [k3; strmatch(var_list_{i}, M_.endo_names(dr.order_var), 'exact')]; + k3p = [k3; strmatch(var_list_{i}, M_.endo_names, 'exact')]; end end else @@ -513,11 +513,11 @@ if options_.analytic_derivation skipline() if any(isnan(params)) disp('After computing the steadystate, the following parameters are still NaN: '), - disp(M.param_names(isnan(params),:)) + disp(char(M.param_names(isnan(params)))) end if any(find(params(~isnan(params))-M.params(~isnan(params)))) disp('The steadystate file changed the values for the following parameters: '), - disp(M.param_names(find(params(~isnan(params))-M.params(~isnan(params))),:)) + disp(char(M.param_names(find(params(~isnan(params))-M.params(~isnan(params)))))) end disp('The derivatives of jacobian and steady-state will be computed numerically'), disp('(re-set options_.analytic_derivation_mode= -2)'), diff --git a/matlab/dynare_identification.m b/matlab/dynare_identification.m index 25754e760..05cbecf3f 100644 --- a/matlab/dynare_identification.m +++ b/matlab/dynare_identification.m @@ -17,9 +17,7 @@ function [pdraws, TAU, GAM, LRE, gp, H, JJ] = dynare_identification(options_iden % SPECIAL REQUIREMENTS % None -% main -% -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -147,8 +145,9 @@ options_ = set_default_option(options_,'datafile',''); options_.mode_compute = 0; options_.plot_priors = 0; options_.smoother=1; -[dataset_,dataset_info,xparam1,hh, M_, options_, oo_, estim_params_,bayestopt_,bounds]=dynare_estimation_init(M_.endo_names,fname_,1, M_, options_, oo_, estim_params_, bayestopt_); -options_ident = set_default_option(options_ident,'analytic_derivation_mode',options_.analytic_derivation_mode); % if not set by user, inherit default global one +[dataset_, dataset_info, xparam1, hh, M_, options_, oo_, estim_params_, bayestopt_, bounds] = ... + dynare_estimation_init(M_.endo_names, fname_,1, M_, options_, oo_, estim_params_, bayestopt_); +options_ident = set_default_option(options_ident,'analytic_derivation_mode', options_.analytic_derivation_mode); % if not set by user, inherit default global one if prior_exist if any(bayestopt_.pshape > 0) @@ -206,7 +205,7 @@ if prior_exist end end if options_.TeX - name_tex=char(name_tex); + name_tex=name_tex; end else indx = [1:M_.param_nbr]; @@ -214,8 +213,10 @@ else offset = M_.exo_nbr; np = M_.param_nbr; nparam = np+offset; - name = [cellstr([repmat('SE_',size(M_.exo_names_tex)),M_.exo_names_tex]); cellstr(M_.param_names)]; - name_tex = [cellstr([repmat('$ SE_',size(M_.exo_names_tex)),M_.exo_names_tex,repmat('}$',size(M_.exo_names_tex))]); cellstr(M_.param_names_tex)]; + name = cellfun(@(x) horzcat('SE_', x), M_.exo_names, 'UniformOutput', false); + name = vertcat(name, M_.param_names); + name_tex = cellfun(@(x) horzcat('$ SE_{', x, '} $'), M_.exo_names, 'UniformOutput', false); + name_tex = vertcat(name_tex, M_.param_names_tex); if ~isequal(M_.H,0) fprintf('\ndynare_identification:: Identification does not support measurement errors and will ignore them in the following. To test their identifiability, instead define them explicitly in measurement equations in the model definition.\n') end diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m index 4cfa070f5..8a416ed85 100644 --- a/matlab/dynare_sensitivity.m +++ b/matlab/dynare_sensitivity.m @@ -4,7 +4,7 @@ function x0=dynare_sensitivity(options_gsa) % Reference: % M. Ratto, Global Sensitivity Analysis for Macroeconomic models, MIMEO, 2006. -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -124,7 +124,8 @@ if ~isempty(options_gsa.datafile) || isempty(bayestopt_) || options_gsa.rmse options_.mode_compute = 0; options_.filtered_vars = 1; options_.plot_priors = 0; - [dataset_,dataset_info,xparam1,hh, M_, options_, oo_, estim_params_,bayestopt_]=dynare_estimation_init(M_.endo_names,fname_,1, M_, options_, oo_, estim_params_, bayestopt_); + [dataset_,dataset_info,xparam1,hh, M_, options_, oo_, estim_params_, bayestopt_] = ... + dynare_estimation_init(M_.endo_names, fname_, 1, M_, options_, oo_, estim_params_, bayestopt_); % computes a first linear solution to set up various variables else if isempty(options_.qz_criterium) @@ -186,23 +187,23 @@ options_gsa = set_default_option(options_gsa,'logtrans_redform',0); options_gsa = set_default_option(options_gsa,'threshold_redform',[]); options_gsa = set_default_option(options_gsa,'ksstat_redform',0.001); options_gsa = set_default_option(options_gsa,'alpha2_redform',1.e-5); -options_gsa = set_default_option(options_gsa,'namendo',[]); +options_gsa = set_default_option(options_gsa,'namendo',{}); options_gsa = set_default_option(options_gsa,'namlagendo',[]); -options_gsa = set_default_option(options_gsa,'namexo',[]); +options_gsa = set_default_option(options_gsa,'namexo',{}); % RMSE mapping options_gsa = set_default_option(options_gsa,'load_rmse',0); options_gsa = set_default_option(options_gsa,'lik_only',0); -options_gsa = set_default_option(options_gsa,'var_rmse',char(options_.varobs)); +options_gsa = set_default_option(options_gsa,'var_rmse', options_.varobs); %get corresponding TeX-names; -options_gsa.var_rmse_tex=''; -for ii=1:size(options_gsa.var_rmse,1) - temp_name=M_.endo_names_tex(strmatch(deblank(options_gsa.var_rmse(ii,:)),M_.endo_names,'exact'),:); - options_gsa.var_rmse_tex=strvcat(options_gsa.var_rmse_tex,temp_name); +options_gsa.var_rmse_tex={}; +for ii=1:length(options_gsa.var_rmse) + temp_name = M_.endo_names_tex{strmatch(options_gsa.var_rmse{ii}, M_.endo_names, 'exact')}; + options_gsa.var_rmse_tex = vertcat(options_gsa.var_rmse_tex, temp_name); end -options_gsa = set_default_option(options_gsa,'pfilt_rmse',0.1); -options_gsa = set_default_option(options_gsa,'istart_rmse',options_.presample+1); -options_gsa = set_default_option(options_gsa,'alpha_rmse',0.001); -options_gsa = set_default_option(options_gsa,'alpha2_rmse',1.e-5); +options_gsa = set_default_option(options_gsa,'pfilt_rmse', 0.1); +options_gsa = set_default_option(options_gsa,'istart_rmse', options_.presample+1); +options_gsa = set_default_option(options_gsa,'alpha_rmse', 0.001); +options_gsa = set_default_option(options_gsa,'alpha2_rmse', 1.e-5); if options_gsa.neighborhood_width options_gsa.pprior=0; @@ -324,13 +325,13 @@ if options_gsa.redform && ~isempty(options_gsa.namendo) x0 = stab_map_(OutputDirectoryName,options_gsa); end if strmatch(':',options_gsa.namendo,'exact') - options_gsa.namendo=M_.endo_names(1:M_.orig_endo_nbr,:); + options_gsa.namendo = M_.endo_names(1:M_.orig_endo_nbr); end if strmatch(':',options_gsa.namexo,'exact') - options_gsa.namexo=M_.exo_names; + options_gsa.namexo = M_.exo_names; end if strmatch(':',options_gsa.namlagendo,'exact') - options_gsa.namlagendo=M_.endo_names(1:M_.orig_endo_nbr,:); + options_gsa.namlagendo = M_.endo_names(1:M_.orig_endo_nbr); end % options_.opt_gsa = options_gsa; if options_gsa.morris==1 @@ -345,7 +346,6 @@ if options_gsa.redform && ~isempty(options_gsa.namendo) fprintf('After obtaining the files, you need to unpack them and set a Matlab Path to those files.\n') error('SS-ANOVA-R Toolbox missing!') end - redform_map(OutputDirectoryName,options_gsa); end end @@ -462,7 +462,7 @@ if options_gsa.glue Obs.name{j} = options_.varobs{j}; vj = options_.varobs{j}; - jxj = strmatch(vj,lgy_(dr_.order_var,:),'exact'); + jxj = strmatch(vj,lgy_(dr_.order_var),'exact'); js = strmatch(vj,lgy_,'exact'); if ~options_gsa.ppost % y0=zeros(gend+1,nruns); @@ -502,7 +502,7 @@ if options_gsa.glue for j=1:M_.endo_nbr if ~ismember(j,ismoo) jsmoo=jsmoo+1; - vj=deblank(M_.endo_names(dr_.order_var(j),:)); + vj = M_.endo_names{dr_.order_var(j)}; if ~options_gsa.ppost % y0 = squeeze(stock_smooth(:,j,:)) + ... % kron(stock_ys(j,:),ones(size(stock_smooth,1),1)); @@ -518,9 +518,9 @@ if options_gsa.glue Out1(jsmoo).ini = 'yes'; end end - tit(M_.exo_names_orig_ord,:) = M_.exo_names; + tit(M_.exo_names_orig_ord) = M_.exo_names; for j=1:M_.exo_nbr - Exo(j).name = deblank(tit(j,:)); + Exo(j).name = tit{j}; end if ~options_gsa.ppost Lik(length(options_.varobs)+1).name = 'logpo'; diff --git a/matlab/dynasave.m b/matlab/dynasave.m index ef938dbc2..45642a8ca 100644 --- a/matlab/dynasave.m +++ b/matlab/dynasave.m @@ -1,4 +1,4 @@ -function dynasave(s,var_list) +function dynasave(s, var_list) % function dynasave(s,var_list) % This optional command saves the simulation results in a .MAT file. % @@ -12,7 +12,7 @@ function dynasave(s,var_list) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2015 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -31,28 +31,28 @@ function dynasave(s,var_list) global M_ oo_ -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr, :); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -if ~isfield(oo_,'endo_simul') || isempty(oo_.endo_simul) +if ~isfield(oo_, 'endo_simul') || isempty(oo_.endo_simul) error('dynasave:: The results structure does not contain simulated series. Maybe the periods option has not been set.') end -n = size(var_list,1); -ivar=zeros(n,1); +n = length(var_list); +ivar = zeros(n, 1); for i=1:n - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) - error (['One of the specified variables does not exist']) ; + error ('One of the specified variables does not exist') ; else ivar(i) = i_tmp; end end -eval([var_list(1,:) '=oo_.endo_simul(ivar(1),:)'';']) -eval(['save ' s ' ' var_list(1,:) ' -mat']) +eval([var_list{1} ' = oo_.endo_simul(ivar(1),:)'';']) +eval(['save ' s ' ' var_list{1} ' -mat']) for dynare__i_ = 2:n - eval([var_list(dynare__i_,:) '=oo_.endo_simul(ivar(dynare__i_),:)'';']) - eval(['save ' s ' ' var_list(dynare__i_,:) ' -append -mat']) + eval([var_list{dynare__i_} ' = oo_.endo_simul(ivar(dynare__i_),:)'';']) + eval(['save ' s ' ' var_list{dynare__i_} ' -append -mat']) end diff --git a/matlab/dynatype.m b/matlab/dynatype.m index 517bcc0b1..33f318267 100644 --- a/matlab/dynatype.m +++ b/matlab/dynatype.m @@ -13,7 +13,7 @@ function dynatype (s,var_list) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -34,23 +34,24 @@ global M_ oo_ fid=fopen(s,'w') ; -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr,:); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -n = size(var_list,1); -ivar=zeros(n,1); +n = length(var_list); +ivar = zeros(n,1); + for i=1:n - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) - error (['One of the specified variables does not exist']) ; + error ('One of the specified variables does not exist') ; else ivar(i) = i_tmp; end end for i = 1:n - fprintf(fid,M_.endo_names(ivar(i),:),'\n') ; + fprintf(fid,M_.endo_names{ivar(i)},'\n') ; fprintf(fid,'\n') ; fprintf(fid,'%15.8g\n',oo_.endo_simul(ivar(i),:)') ; end diff --git a/matlab/dyntable.m b/matlab/dyntable.m index 5b632cde3..27a8305f8 100644 --- a/matlab/dyntable.m +++ b/matlab/dyntable.m @@ -1,17 +1,21 @@ -function dyntable(options_,title,headers,labels,values,label_width,val_width,val_precis,optional_header) -% function dyntable(title,headers,labels,values,label_width,val_width,val_precis) -% Inputs: -% options_ [structure] Dynare options structure -% title [string] Table title -% headers [n by nchar] character array of labels for header row -% labels [n by nchar] character array of labels for label column -% values [matrix] matrix of values to display -% label_width [scalar] Width of the label -% val_width [scalar] Width of value column -% val_precis [integer] precision of displayed values +function dyntable(options_, title, headers, labels, values, label_width, val_width, val_precis, optional_header) + +% Prints a table of results in main command window. % +% INPUTS +% - options_ [structure] Dynare options structure +% - title [string] Table title +% - headers [cell] labels for header row (each element is a row characater array) +% - labels [cell] labels for label column (each element is a row characater array) +% - values [double] matrix of values to display +% - label_width [integer] scalar, width of the label +% - val_width [integer] scalar, width of value column +% - val_precis [integer] scalar, precision of displayed values % -% Copyright (C) 2002-2017 Dynare Team +% OUTPUTS +% none + +% Copyright (C) 2002-2018 Dynare Team % % This file is part of Dynare. % @@ -32,16 +36,16 @@ if options_.noprint return end -%% get width of label column -if ~isempty(label_width) - label_width = max(size(deblank(char(headers(1,:),labels)),2)+2, ... - label_width); -else %use default length - label_width = max(size(deblank(char(headers(1,:),labels)),2))+2; +% Set width of label column +if isempty(label_width) + label_width = cellofchararraymaxlength(vertcat(headers{1}, labels))+2; +else + label_width = max(cellofchararraymaxlength(vertcat(headers{1}, labels))+2, label_width); end -label_format_leftbound = sprintf('%%-%ds',label_width); +label_format_leftbound = sprintf('%%-%ds', label_width); -%% get width of label column + +% Set width of other columns if all(~isfinite(values)) values_length = 4; else @@ -50,32 +54,32 @@ end if any(values) < 0 %add one character for minus sign values_length = values_length+1; end - -%% get width of header strings -headers_length = max(size(deblank(headers(2:end,:)),2)); -if ~isempty(val_width) - val_width = max(max(headers_length,values_length)+2,val_width); +headers_length = cellofchararraymaxlength(headers(2:end)); +if isempty(val_width) + val_width = max(headers_length, values_length)+2; else - val_width = max(headers_length,values_length)+2; + val_width = max(max(headers_length, values_length)+2, val_width); end -value_format = sprintf('%%%d.%df',val_width,val_precis); -header_string_format = sprintf('%%%ds',val_width); +value_format = sprintf('%%%d.%df', val_width, val_precis); +header_string_format = sprintf('%%%ds', val_width); if length(title) > 0 fprintf('\n\n%s\n',title); end -%Create and print header string + +% Create and print header string if nargin==9 disp(optional_header) end + if length(headers) > 0 - hh = sprintf(label_format_leftbound ,deblank(headers(1,:))); - for i=2:size(headers,1) - hh = [hh sprintf(header_string_format,deblank(headers(i,:)))]; + hh = sprintf(label_format_leftbound , headers{1}); + for i=2:length(headers) + hh = [hh sprintf(header_string_format, headers{i})]; end - disp(hh); + disp(hh) end for i=1:size(values,1) - disp([sprintf(label_format_leftbound ,deblank(labels(i,:))) sprintf(value_format ,values(i,:))]); + disp([sprintf(label_format_leftbound, labels{i}) sprintf(value_format, values(i,:))]) end \ No newline at end of file diff --git a/matlab/endogenous_prior_restrictions.m b/matlab/endogenous_prior_restrictions.m index ef734acd1..63db7b0be 100644 --- a/matlab/endogenous_prior_restrictions.m +++ b/matlab/endogenous_prior_restrictions.m @@ -15,7 +15,7 @@ function [info, info_irf, info_moment, data_irf, data_moment] = endogenous_prior % info_moment [double] array of test checks for all individual moment restrictions % -% Copyright (C) 2013-2017 Dynare Team +% Copyright (C) 2013-2018 Dynare Team % % This file is part of Dynare. % @@ -47,22 +47,22 @@ if ~isempty(endo_prior_restrictions.irf) error('The algorithm for prior (sign) restrictions on irf''s is currently restricted to first-order decision rules') return end - varlist=Model.endo_names(DynareResults.dr.order_var,:); + varlist = Model.endo_names(DynareResults.dr.order_var); if isempty(T) [T,R,SteadyState,infox,Model,DynareOptions,DynareResults] = dynare_resolve(Model,DynareOptions,DynareResults); else % check if T and R are given in the restricted form!!! - if size(T,1)endo_prior_restrictions.irf{j,4}(1)) && (RR(iendo,iexo) 180 planner_objective_value = NaN; return end -beta = get_optimal_policy_discount_factor(M.params,M.param_names); +beta = get_optimal_policy_discount_factor(M.params, M.param_names); Gy = dr.ghx(nstatic+(1:nspred),:); Gu = dr.ghu(nstatic+(1:nspred),:); diff --git a/matlab/evaluate_steady_state.m b/matlab/evaluate_steady_state.m index 02374f919..4e67441b7 100644 --- a/matlab/evaluate_steady_state.m +++ b/matlab/evaluate_steady_state.m @@ -22,7 +22,7 @@ function [ys,params,info] = evaluate_steady_state(ys_init,M,options,oo,steadysta % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -124,14 +124,14 @@ if options.ramsey_policy if ~isempty(infrow) fprintf('\nevaluate_steady_state: The initial values for the steady state of the following variables are Inf:\n'); for iter=1:length(infrow) - fprintf('%s\n',M.endo_names(infrow(iter),:)); + fprintf('%s\n',M.endo_names{infrow(iter)}); end end nanrow=find(isnan(ys_init)); if ~isempty(nanrow) fprintf('\nevaluate_steady_state: The initial values for the steady state of the following variables are NaN:\n'); for iter=1:length(nanrow) - fprintf('%s\n',M.endo_names(nanrow(iter),:)); + fprintf('%s\n',M.endo_names{nanrow(iter)}); end end end diff --git a/matlab/evaluate_steady_state_file.m b/matlab/evaluate_steady_state_file.m index 50cc9ef69..104ae71e5 100644 --- a/matlab/evaluate_steady_state_file.m +++ b/matlab/evaluate_steady_state_file.m @@ -19,7 +19,7 @@ function [ys,params,info] = evaluate_steady_state_file(ys_init,exo_ss,M,options, % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -117,19 +117,19 @@ if length(M.aux_vars) > 0 && ~options.ramsey_policy ys3 = ys; idx = find(abs(ys0-ys1)>0); if ~isempty(idx) - M.endo_names(idx,:) + M.endo_names{idx} else disp('1-invariant') end idx = find(abs(ys2-ys1)>0); if ~isempty(idx) - M.endo_names(idx,:) + M.endo_names{idx} else disp('2-invariant') end idx = find(abs(ys3-ys3)>0); if ~isempty(idx) - M.endo_names(idx,:) + M.endo_names{idx} else disp('3-invariant') end @@ -160,9 +160,7 @@ elseif ~isempty(options.steadystate_partial) nov = length(ssvar); indv = zeros(nov,1); for i = 1:nov - indv(i) = strmatch(ssvar(i),M.endo_names,'exact'); + indv(i) = strmatch(ssvar(i), M.endo_names, 'exact'); end - [ys,check] = dynare_solve('restricted_steadystate',... - ys(indv),... - options, exo_ss,indv); + [ys,check] = dynare_solve('restricted_steadystate', ys(indv), options, exo_ss,indv); end diff --git a/matlab/forcst.m b/matlab/forcst.m index d760ca892..67bc0f7e2 100644 --- a/matlab/forcst.m +++ b/matlab/forcst.m @@ -22,7 +22,7 @@ function [yf,int_width,int_width_ME]=forcst(dr,y0,horizon,var_list,M_,oo_,option % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -48,16 +48,16 @@ endo_nbr = M_.endo_nbr; inv_order_var = dr.inv_order_var; [A,B] = kalman_transition_matrix(dr,nstatic+(1:nspred),1:nc,M_.exo_nbr); -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr,:); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -nvar = size(var_list,1); -ivar=zeros(nvar,1); +nvar = length(var_list); +ivar = zeros(nvar, 1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) - disp(var_list(i,:)); - error (['One of the variable specified does not exist']) ; + disp(var_list{i}); + error ('One of the variable specified does not exist') ; else ivar(i) = i_tmp; end @@ -71,8 +71,8 @@ sigma_u = B*M_.Sigma_e*B'; sigma_u1 = ghu1*M_.Sigma_e*ghu1'; sigma_y = 0; %no uncertainty about the states -var_yf=NaN(horizon,nvar); %initialize -for i=1:horizon +var_yf = NaN(horizon,nvar); %initialize +for i = 1:horizon %map uncertainty about states into uncertainty about observables sigma_y1 = ghx1*sigma_y*ghx1'+sigma_u1; var_yf(i,:) = diag(sigma_y1)'; @@ -85,18 +85,18 @@ for i=1:horizon end if nargout==3 var_yf_ME=var_yf; - [loc_H,loc_varlist]=ismember(options_.varobs',options_.varlist); - loc_varlist(loc_varlist==0)=[]; + [loc_H, loc_varlist] = ismember(options_.varobs', options_.varlist); + loc_varlist(loc_varlist==0) = []; if ~isempty(loc_varlist) - var_yf_ME(:,loc_varlist)=var_yf(:,loc_varlist)+ repmat(diag(M_.H(loc_H,loc_H))',horizon,1); + var_yf_ME(:,loc_varlist) = var_yf(:,loc_varlist)+repmat(diag(M_.H(loc_H,loc_H))', horizon, 1); end - int_width_ME = zeros(horizon,nvar); + int_width_ME = zeros(horizon, nvar); end -fact = norminv((1-options_.forecasts.conf_sig)/2,0,1); +fact = norminv((1-options_.forecasts.conf_sig)/2, 0, 1); -int_width = zeros(horizon,nvar); -for i=1:nvar +int_width = zeros(horizon, nvar); +for i = 1:nvar int_width(:,i) = -fact*sqrt(var_yf(:,i)); if nargout==3 int_width_ME(:,i) = -fact*sqrt(var_yf_ME(:,i)); diff --git a/matlab/forecast_graphs.m b/matlab/forecast_graphs.m index 5631ff4b4..e2815c76c 100644 --- a/matlab/forecast_graphs.m +++ b/matlab/forecast_graphs.m @@ -8,7 +8,7 @@ function forecast_graphs(var_list,M_, oo_,options_) % o oo_ outputs structure % o options_ options structure -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -35,13 +35,13 @@ yf = oo_.forecast.Mean; hpdinf = oo_.forecast.HPDinf; hpdsup = oo_.forecast.HPDsup; if isempty(var_list) - var_list = endo_names(1:M_.orig_endo_nbr,:); + var_list = endo_names(1:M_.orig_endo_nbr); end i_var = []; -for i = 1:size(var_list) - tmp = strmatch(var_list(i,:),endo_names,'exact'); +for i = 1:length(var_list) + tmp = strmatch(var_list{i}, endo_names, 'exact'); if isempty(tmp) - error([var_list(i,:) ' isn''t an endogenous variable']) + error([var_list{i} ' isn''t an endogenous variable']) end i_var = [i_var; tmp]; end @@ -55,17 +55,18 @@ if ~exist([dname '/graphs'],'dir') mkdir(dname,'graphs'); end -if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format))) - fidTeX=write_LaTeX_header([M_.dname '/graphs/',fname,'_forcst.tex']); +if options_.TeX && any(strcmp('eps', cellstr(options_.graph_format))) + fidTeX = write_LaTeX_header([M_.dname '/graphs/', fname, '_forcst.tex']); end m = 1; n_fig = 1; -hh=dyn_figure(options_.nodisplay,'Name','Forecasts (I)'); +hh = dyn_figure(options_.nodisplay, 'Name', 'Forecasts (I)'); + for j= 1:nvar if m > nc*nr - dyn_saveas(hh,[ dname '/graphs/forcst' int2str(n_fig)],options_.nodisplay,options_.graph_format); - if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format))) + dyn_saveas(hh,[ dname '/graphs/forcst' int2str(n_fig)], options_.nodisplay, options_.graph_format); + if options_.TeX && any(strcmp('eps', cellstr(options_.graph_format))) fprintf(fidTeX,'\\begin{figure}[H]\n'); fprintf(fidTeX,'\\centering \n'); fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/forcst%d}\n',dname,n_fig); @@ -78,16 +79,9 @@ for j= 1:nvar eval(['hh=dyn_figure(options_.nodisplay,''Name'',''Forecasts (' int2str(n_fig) ')'');']); m = 1; end - subplot(nr,nc,m); - vn = deblank(endo_names(i_var(j),:)); + subplot(nr, nc, m); + vn = endo_names{i_var(j)}; obs = 0; -% $$$ k = strmatch(vn,varobs,'exact'); -% $$$ if ~isempty(k) -% $$$ yy = y.(vn)(end-9:end) + repmat(ys(i_var(j)),10,1)+trend(k,:)'; -% $$$ plot(yy); -% $$$ hold on -% $$$ obs = 10; -% $$$ end plot([NaN(obs,1); yf.(vn)],'b-'); hold on plot([NaN(obs,1); hpdinf.(vn)],'b-'); diff --git a/matlab/formdata.m b/matlab/formdata.m index b8040515c..3a28db602 100644 --- a/matlab/formdata.m +++ b/matlab/formdata.m @@ -11,7 +11,7 @@ function formdata(fname,date) % SPECIAL REQUIREMENT % none -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -31,11 +31,11 @@ function formdata(fname,date) global M_ oo_ fid = fopen([fname '_endo.frm'],'w'); -n=size(oo_.endo_simul,1); -t=size(oo_.endo_simul,2); -SN=upper(cellstr(M_.endo_names)); -for i=1:n - str=char(SN(i)); +n = size(oo_.endo_simul, 1); +t = size(oo_.endo_simul, 2); +SN = upper(M_.endo_names); +for i = 1:n + str=SN{i}; fprintf(fid,'USER: x x DATAFILE: x %s\n',str); fprintf(fid,'PER: 1 YEAR: %s FRAC: 1 NOBS: %d CLINES: 0 DLINES: ???\n',date,t); fprintf(fid,'%10.5f %10.5f %10.5f %10.5f\n',reshape(oo_.endo_simul(i,1:floor(t/4)*4),floor(t/4),4)); @@ -56,9 +56,9 @@ fclose(fid); fid = fopen([fname '_exo.frm'],'w'); n=size(oo_.exo_simul,2); t=size(oo_.exo_simul,1); -SN=upper(cellstr(M_.exo_names)); +SN=upper(M_.exo_names); for i=1:n - str=char(SN(i)); + str = SN{i}; fprintf(fid,'USER: x x DATAFILE: x %s\n',str); fprintf(fid,'PER: 1 YEAR: %s FRAC: 1 NOBS: %d CLINES: 0 DLINES: ???\n',date,t); fprintf(fid,'%10.5f %10.5f %10.5f %10.5f\n',reshape(oo_.exo_simul(1:floor(t/4)*4,i),floor(t/4),4)); diff --git a/matlab/generate_trace_plots.m b/matlab/generate_trace_plots.m index 83b9003fc..ce520449c 100644 --- a/matlab/generate_trace_plots.m +++ b/matlab/generate_trace_plots.m @@ -11,7 +11,7 @@ function generate_trace_plots(chain_number) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2016 Dynare Team +% Copyright (C) 2016-2018 Dynare Team % % This file is part of Dynare. % @@ -32,37 +32,37 @@ global M_ options_ estim_params_ % Get informations about the posterior draws: -MetropolisFolder = CheckPath('metropolis',M_.dname); +MetropolisFolder = CheckPath('metropolis', M_.dname); load_last_mh_history_file(MetropolisFolder, M_.fname); if chain_number>record.Nblck error('generate_trace_plots:: chain number is bigger than existing number of chains') end -trace_plot(options_,M_,estim_params_,'PosteriorDensity',chain_number) +trace_plot(options_, M_, estim_params_, 'PosteriorDensity', chain_number) -for ii=1:size(estim_params_.param_vals,1) - parameter_name=deblank(M_.param_names(estim_params_.param_vals(ii,1),:)); - trace_plot(options_,M_,estim_params_,'DeepParameter',chain_number,parameter_name) +for ii=1:size(estim_params_.param_vals, 1) + parameter_name = M_.param_names{estim_params_.param_vals(ii,1)}; + trace_plot(options_, M_, estim_params_, 'DeepParameter', chain_number, parameter_name) end -for ii=1:size(estim_params_.var_exo,1) - parameter_name=deblank(M_.exo_names(estim_params_.var_exo(ii,1),:)); - trace_plot(options_,M_,estim_params_,'StructuralShock',chain_number,parameter_name) +for ii=1:size(estim_params_.var_exo, 1) + parameter_name = M_.exo_names{estim_params_.var_exo(ii,1)}; + trace_plot(options_, M_, estim_params_, 'StructuralShock', chain_number, parameter_name) end -for ii=1:size(estim_params_.var_endo,1) - parameter_name=deblank(M_.endo_names(estim_params_.var_endo(ii,1),:)); - trace_plot(options_,M_,estim_params_,'MeasurementError',chain_number,parameter_name) +for ii=1:size(estim_params_.var_endo, 1) + parameter_name = M_.endo_names{estim_params_.var_endo(ii,1)}; + trace_plot(options_, M_, estim_params_, 'MeasurementError', chain_number, parameter_name) end -for ii=1:size(estim_params_.corrn,1) - parameter_name_1=deblank(M_.endo_names(estim_params_.corrn(ii,1),:)); - parameter_name_2=deblank(M_.endo_names(estim_params_.corrn(ii,2),:)); - trace_plot(options_,M_,estim_params_,'MeasurementError',chain_number,parameter_name_1,parameter_name_2) +for ii=1:size(estim_params_.corrn, 1) + parameter_name_1 = M_.endo_names{estim_params_.corrn(ii,1)}; + parameter_name_2 = M_.endo_names{estim_params_.corrn(ii,2)}; + trace_plot(options_, M_, estim_params_, 'MeasurementError', chain_number, parameter_name_1, parameter_name_2) end -for ii=1:size(estim_params_.corrx,1) - parameter_name_1=deblank(M_.exo_names(estim_params_.corrx(ii,1),:)); - parameter_name_2=deblank(M_.exo_names(estim_params_.corrx(ii,2),:)); - trace_plot(options_,M_,estim_params_,'StructuralShock',chain_number,parameter_name_1,parameter_name_2) +for ii=1:size(estim_params_.corrx, 1) + parameter_name_1 = M_.exo_names{estim_params_.corrx(ii,1)}; + parameter_name_2 = M_.exo_names{estim_params_.corrx(ii,2)}; + trace_plot(options_, M_, estim_params_, 'StructuralShock', chain_number, parameter_name_1, parameter_name_2) end \ No newline at end of file diff --git a/matlab/getIrfShocksIndx.m b/matlab/getIrfShocksIndx.m index 788d58cd1..c7f9fba48 100644 --- a/matlab/getIrfShocksIndx.m +++ b/matlab/getIrfShocksIndx.m @@ -8,7 +8,7 @@ function irf_shocks_indx=getIrfShocksIndx() % Outputs: % irf_shocks_indx: [1 by n_irf_shocks] vector storing the indices % -% Copyright (C) 2011-2017 Dynare Team +% Copyright (C) 2011-2018 Dynare Team % % This file is part of Dynare. % @@ -32,7 +32,7 @@ if (isfield(options_,'irf_shocks')==0) else irf_shocks_indx = zeros(1,size(options_.irf_shocks,1)); for i=1:size(options_.irf_shocks,1) - irf_shocks_indx(i) = find(strcmp(deblank(options_.irf_shocks(i,:)), cellstr(M_.exo_names))); + irf_shocks_indx(i) = find(strcmp(deblank(options_.irf_shocks(i,:)), M_.exo_names)); end irf_shocks_indx_unique=unique(irf_shocks_indx); if options_.debug && (length(irf_shocks_indx_unique) ~= length(irf_shocks_indx)) diff --git a/matlab/get_optimal_policy_discount_factor.m b/matlab/get_optimal_policy_discount_factor.m index 89b605b3b..1aa886efa 100644 --- a/matlab/get_optimal_policy_discount_factor.m +++ b/matlab/get_optimal_policy_discount_factor.m @@ -13,7 +13,7 @@ function discount_factor=get_optimal_policy_discount_factor(params,param_names) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -30,4 +30,4 @@ function discount_factor=get_optimal_policy_discount_factor(params,param_names) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -discount_factor = params(find(strcmp('optimal_policy_discount_factor',cellstr(param_names)))); +discount_factor = params(find(strcmp('optimal_policy_discount_factor', param_names))); diff --git a/matlab/get_posterior_parameters.m b/matlab/get_posterior_parameters.m index 0417956ed..604f19458 100644 --- a/matlab/get_posterior_parameters.m +++ b/matlab/get_posterior_parameters.m @@ -15,7 +15,7 @@ function xparam = get_posterior_parameters(type,M_,estim_params_,oo_,options_,fi % SPECIAL REQUIREMENTS % None. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -46,7 +46,7 @@ xparam = zeros(nvx+nvn+ncx+ncn+np,1); m = 1; for i=1:nvx k1 = estim_params_.var_exo(i,1); - name1 = deblank(M_.exo_names(k1,:)); + name1 = M_.exo_names{k1}; xparam(m) = oo_.([field1 type]).shocks_std.(name1); m = m+1; end @@ -61,8 +61,8 @@ end for i=1:ncx k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - name1 = deblank(M_.exo_names(k1,:)); - name2 = deblank(M_.exo_names(k2,:)); + name1 = M_.exo_names{k1}; + name2 = M_.exo_names{k2}; xparam(m) = oo_.([field1 type]).shocks_corr.([name1 '_' name2]); m = m+1; end @@ -79,7 +79,7 @@ end FirstDeep = m; for i=1:np - name1 = deblank(M_.param_names(estim_params_.param_vals(i,1),:)); + name1 = M_.param_names{estim_params_.param_vals(i,1)}; xparam(m) = oo_.([field1 type]).parameters.(name1); m = m+1; end \ No newline at end of file diff --git a/matlab/get_the_name.m b/matlab/get_the_name.m index 9251dd2f9..7da451d11 100644 --- a/matlab/get_the_name.m +++ b/matlab/get_the_name.m @@ -1,4 +1,4 @@ -function [nam,texnam] = get_the_name(k,TeX,M_,estim_params_,options_) +function [nam, texnam] = get_the_name(k, TeX, M_, estim_params_, options_) %@info: %! @deftypefn {Function File} {[@var{nam},@var{texnam}] =} get_the_name (@var{k},@var{TeX},@var{M_},@var{estim_params_},@var{options_}) @@ -40,7 +40,7 @@ function [nam,texnam] = get_the_name(k,TeX,M_,estim_params_,options_) %! @end deftypefn %@eod: -% Copyright (C) 2004-2013 Dynare Team +% Copyright (C) 2004-2018 Dynare Team % % This file is part of Dynare. % @@ -66,44 +66,44 @@ ncx = estim_params_.ncx; ncn = estim_params_.ncn; if k <= nvx - vname = deblank(M_.exo_names(estim_params_.var_exo(k,1),:)); - nam = ['SE_',vname]; + vname = M_.exo_names{estim_params_.var_exo(k,1)}; + nam = sprintf('SE_%s', vname); if TeX - tname = deblank(M_.exo_names_tex(estim_params_.var_exo(k,1),:)); - texnam = ['$ SE_{' tname '} $']; + tname = M_.exo_names_tex{estim_params_.var_exo(k,1)}; + texnam = sprintf('$ SE_{%s} $', tname); end elseif k <= (nvx+nvn) vname = options_.varobs{estim_params_.nvn_observable_correspondence(k-estim_params_.nvx,1)}; - nam=['SE_EOBS_',vname]; + nam = sprintf('SE_EOBS_%s', vname); if TeX - tname = deblank(M_.endo_names_tex(estim_params_.var_endo(k-estim_params_.nvx,1),:)); - texnam = ['$ EOBS SE_{' tname '} $']; + tname = M_.endo_names_tex{estim_params_.var_endo(k-estim_params_.nvx,1)}; + texnam = sprintf('$ EOBS SE_{%s} $', tname); end elseif k <= (nvx+nvn+ncx) jj = k - (nvx+nvn); k1 = estim_params_.corrx(jj,1); k2 = estim_params_.corrx(jj,2); - vname = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - nam=['CC_',vname]; + vname = sprintf('%s_%s', M_.exo_names{k1}, M_.exo_names{k2}); + nam = sprintf('CC_%s', vname); if TeX - tname = [deblank(M_.exo_names_tex(k1,:)) ',' deblank(M_.exo_names_tex(k2,:))]; - texnam = ['$ CC_{' tname '} $']; + tname = sprintf('%s,%s', M_.exo_names_tex{k1}, M_.exo_names_tex{k2}); + texnam = sprintf('$ CC_{%s} $', tname); end elseif k <= (nvx+nvn+ncx+ncn) jj = k - (nvx+nvn+ncx); k1 = estim_params_.corrn(jj,1); k2 = estim_params_.corrn(jj,2); - vname = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; - nam=['CC_EOBS_' vname]; + vname = sprintf('%s_%s', M_.endo_names{k1}, M_.endo_names{k2}); + nam = sprintf('CC_EOBS_%s', vname); if TeX - tname = [deblank(M_.endo_names_tex(k1,:)) ',' deblank(M_.endo_names_tex(k2,:))]; - texnam =['$ EOBS CC_{' tname '} $']; + tname = sprintf('%s,%s', M_.endo_names_tex{k1}, M_.endo_names_tex{k2}); + texnam = sprintf('$ EOBS CC_{%s} $', tname); end else jj = k - (nvx+nvn+ncx+ncn); jj1 = estim_params_.param_vals(jj,1); - nam = deblank(M_.param_names(jj1,:)); + nam = M_.param_names{jj1}; if TeX - texnam = ['$ ' deblank(M_.param_names_tex(jj1,:)) ' $']; + texnam = sprintf('$ %s $', M_.param_names_tex{jj1}); end end \ No newline at end of file diff --git a/matlab/get_variables_list.m b/matlab/get_variables_list.m index b72479b37..642af1246 100644 --- a/matlab/get_variables_list.m +++ b/matlab/get_variables_list.m @@ -1,14 +1,16 @@ -function [ivar,vartan,options_] = get_variables_list(options_,M_) +function [ivar, vartan, options_] = get_variables_list(options_, M_) + % This function builds a vector of indices in varlist or varobs. % % INPUTS -% o options_ [structure] Describes global options. -% o M_ [structure] Describes the model. +% o options_ [structure] Describes global options. +% o M_ [structure] Describes the model. +% % OUTPUTS -% o ivar [integer] nvar*1 vector of indices (nvar is the number -% of variables). -% o vartan [char] array of characters (with nvar rows). -% o options_ [structure] Describes global options. +% o ivar [integer] nvar*1 vector of indices (nvar is the number +% of variables). +% o vartan [cell of char arrays] array of characters (with nvar rows). +% o options_ [structure] Describes global options. % % ALGORITHM % None. @@ -16,7 +18,7 @@ function [ivar,vartan,options_] = get_variables_list(options_,M_) % SPECIAL REQUIREMENTS % None. -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -35,13 +37,12 @@ function [ivar,vartan,options_] = get_variables_list(options_,M_) varlist = options_.varlist; if isempty(varlist) - varlist = char(options_.varobs); + varlist = options_.varobs; options_.varlist = varlist; end -nvar = rows(varlist); +nvar = length(varlist); vartan = varlist; -nvar = size(vartan,1); ivar = zeros(nvar,1); for i = 1:nvar - ivar(i) = strmatch(deblank(vartan(i,:)),M_.endo_names,'exact'); + ivar(i) = strmatch(vartan{i}, M_.endo_names, 'exact'); end \ No newline at end of file diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m index 077ad3795..c8a37a9e6 100644 --- a/matlab/global_initialization.m +++ b/matlab/global_initialization.m @@ -11,7 +11,7 @@ function global_initialization() % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -678,7 +678,7 @@ options_.particleswarm = particleswarm; % prior analysis options_.prior_mc = 20000; -options_.prior_analysis_endo_var_list = []; +options_.prior_analysis_endo_var_list = {}; % did model undergo block decomposition + minimum feedback set computation ? options_.block = 0; diff --git a/matlab/graph_decomp.m b/matlab/graph_decomp.m index f2c670549..33793d276 100644 --- a/matlab/graph_decomp.m +++ b/matlab/graph_decomp.m @@ -11,7 +11,7 @@ function []=graph_decomp(z,shock_names,endo_names,i_var,initial_date,DynareModel % DynareModel [structure] Dynare model structure % DynareOptions [structure] Dynare options structure -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -109,7 +109,7 @@ for j=1:nvar z1 = squeeze(z(i_var(j),:,:)); if screen_shocks [junk, isort] = sort(mean(abs(z1(1:end-2,:)')), 'descend'); - labels = char(char(shock_names(isort(1:16),:)),'Others', 'Initial values'); + labels = char(char(shock_names(isort(1:16))),'Others', 'Initial values'); zres = sum(z1(isort(17:end),:),1); z1 = [z1(isort(1:16),:); zres; z1(comp_nbr0:end,:)]; comp_nbr=18; @@ -128,7 +128,7 @@ for j=1:nvar if ymax-ymin < 1e-6 continue end - fhandle = dyn_figure(DynareOptions.plot_shock_decomp.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' deblank(endo_names(i_var(j),:)) '.'], 'PaperPositionMode', 'auto','PaperOrientation','landscape','renderermode','auto'); + fhandle = dyn_figure(DynareOptions.plot_shock_decomp.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' endo_names{i_var(j)} '.'], 'PaperPositionMode', 'auto','PaperOrientation','landscape','renderermode','auto'); set(fhandle,'position' ,[50 50 1500 750]) ax=axes('Position',[0.1 0.1 0.6 0.8],'box','on'); % plot(ax,x(2:end),z1(end,:),'k-','LineWidth',2) @@ -213,13 +213,13 @@ for j=1:nvar colormap(new_colormap) end hold off - dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',deblank(endo_names(i_var(j),:)),fig_mode1,fig_name],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format); + dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',endo_names{i_var(j)},fig_mode1,fig_name],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format); if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format))) fprintf(fidTeX,'\\begin{figure}[H]\n'); fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/%s_shock_decomposition_%s}\n',DynareModel.fname,DynareModel.fname,[deblank(endo_names(i_var(j),:)) fig_mode1 fig_name]); - fprintf(fidTeX,'\\label{Fig:shock_decomp:%s}\n',[fig_mode deblank(endo_names(i_var(j),:)) fig_name]); - fprintf(fidTeX,['\\caption{' preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': $ %s $.}\n'],deblank(DynareModel.endo_names_tex(i_var(j),:))); + fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/%s_shock_decomposition_%s}\n',DynareModel.fname,DynareModel.fname,[endo_names{i_var(j)} fig_mode1 fig_name]); + fprintf(fidTeX,'\\label{Fig:shock_decomp:%s}\n',[fig_mode endo_names{i_var(j)} fig_name]); + fprintf(fidTeX,['\\caption{' preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': $ %s $.}\n'],DynareModel.endo_names_tex{i_var(j)}); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); end diff --git a/matlab/graph_decomp_detail.m b/matlab/graph_decomp_detail.m index 75951a411..ec62cc3a6 100644 --- a/matlab/graph_decomp_detail.m +++ b/matlab/graph_decomp_detail.m @@ -11,7 +11,7 @@ function []=graph_decomp_detail(z,shock_names,endo_names,i_var,initial_date,Dyna % DynareModel [structure] Dynare model structure % DynareOptions [structure] Dynare options structure -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -133,7 +133,7 @@ for j=1:nvar z1 = squeeze(z(i_var(j),:,:)); if screen_shocks, [junk, isort] = sort(mean(abs(z1(1:end-2,:)')), 'descend'); - labels = char(char(shock_names(isort(1:16),:)),'Others', 'Initial values'); + labels = char(char(shock_names(isort(1:16))),'Others', 'Initial values'); zres = sum(z1(isort(17:end),:),1); z1 = [z1(isort(1:16),:); zres; z1(comp_nbr0:end,:)]; comp_nbr=18; @@ -151,7 +151,7 @@ for j=1:nvar continue end for jf = 1:nfigs - fhandle = dyn_figure(DynareOptions.plot_shock_decomp.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' deblank(endo_names(i_var(j),:)) ' (detail).'],'position',[200 100 650 850], 'PaperPositionMode', 'auto','PaperOrientation','portrait','renderermode','auto'); + fhandle = dyn_figure(DynareOptions.plot_shock_decomp.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' endo_names{i_var(j)} ' (detail).'],'position',[200 100 650 850], 'PaperPositionMode', 'auto','PaperOrientation','portrait','renderermode','auto'); a0=zeros(1,4); a0(3)=inf; a0(4)=-inf; @@ -183,7 +183,7 @@ for j=1:nvar mydata.use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups; mydata.shock_group = shock_groups.(shock_ind{ic}); mydata.shock_decomp = DynareOptions.plot_shock_decomp; - if ~isempty(mydata.shock_group.shocks{1}) + if ~isempty(mydata.shock_group.shocks) c = uicontextmenu; hax.UIContextMenu=c; browse_menu = uimenu(c,'Label','Browse group'); @@ -224,13 +224,14 @@ for j=1:nvar else suffix = ['_detail']; end - dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',deblank(endo_names(i_var(j),:)),fig_mode1,fig_name suffix],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format); + dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname, ... + '_shock_decomposition_', endo_names{i_var(j)}, fig_mode1,fig_name suffix],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format); if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format))) fprintf(fidTeX,'\\begin{figure}[H]\n'); fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/%s_shock_decomposition_%s}\n',DynareModel.fname,DynareModel.fname,[deblank(endo_names(i_var(j),:)) fig_mode1 fig_name suffix]); - fprintf(fidTeX,'\\label{Fig:shock_decomp_detail:%s}\n',[fig_mode deblank(endo_names(i_var(j),:)) fig_name suffix]); - fprintf(fidTeX,['\\caption{' preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': $ %s $ (detail).}\n'],deblank(DynareModel.endo_names_tex(i_var(j),:))); + fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/%s_shock_decomposition_%s}\n',DynareModel.fname,DynareModel.fname,[endo_names{i_var(j)} fig_mode1 fig_name suffix]); + fprintf(fidTeX,'\\label{Fig:shock_decomp_detail:%s}\n',[fig_mode endo_names{i_var(j)} fig_name suffix]); + fprintf(fidTeX,['\\caption{' preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': $ %s $ (detail).}\n'], DynareModel.endo_names_tex{i_var(j)}); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); end diff --git a/matlab/gsa/filt_mc_.m b/matlab/gsa/filt_mc_.m index b2dfb0411..d8a01df3f 100644 --- a/matlab/gsa/filt_mc_.m +++ b/matlab/gsa/filt_mc_.m @@ -14,7 +14,7 @@ function [rmse_MC, ixx] = filt_mc_(OutDir,options_gsa_,dataset_,dataset_info) % marco.ratto@ec.europa.eu % Copyright (C) 2012-2016 European Commission -% Copyright (C) 2012-2017 Dynare Team +% Copyright (C) 2012-2018 Dynare Team % % This file is part of Dynare. % @@ -38,12 +38,11 @@ vvarvecm = options_gsa_.var_rmse; if options_.TeX vvarvecm_tex = options_gsa_.var_rmse_tex; else - vvarvecm_tex = []; + vvarvecm_tex = {}; end loadSA = options_gsa_.load_rmse; pfilt = options_gsa_.pfilt_rmse; alpha = options_gsa_.alpha_rmse; -% alpha2 = options_gsa_.alpha2_rmse; alpha2 = 0; pvalue = options_gsa_.alpha2_rmse; istart = max(2,options_gsa_.istart_rmse); @@ -133,7 +132,6 @@ if ~loadSA M_ = set_all_parameters(xparam1_mean,estim_params_,M_); ys_mean=steady_(M_,options_,oo_); end - % eval(options_.datafile) Y = transpose(dataset_.data); gend = dataset_.nobs; data_index = dataset_info.missing.aindex; @@ -141,8 +139,6 @@ if ~loadSA for jx=1:gend data_indx(jx,data_index{jx})=true; end - %stock_gend=data_info.gend; - %stock_data = data_info.data; load([DirectoryName filesep M_.fname '_data.mat']); filfilt = dir([DirectoryName filesep M_.fname '_filter_step_ahead*.mat']); temp_smooth_file_list = dir([DirectoryName filesep M_.fname '_smooth*.mat']); @@ -159,7 +155,6 @@ if ~loadSA logpo2=[]; sto_ys=[]; for j=1:length(filparam) - %load([DirectoryName filesep M_.fname '_param',int2str(j),'.mat']); if isempty(strmatch([M_.fname '_param_irf'],filparam(j).name)) load([DirectoryName filesep filparam(j).name]); x=[x; stock]; @@ -173,11 +168,10 @@ if ~loadSA if options_.opt_gsa.ppost || (options_.opt_gsa.ppost==0 && options_.opt_gsa.lik_only==0) skipline() disp('Computing RMSE''s...') - for i=1:size(vvarvecm,1) - vj=deblank(vvarvecm(i,:)); - - jxj(i) = strmatch(vj,lgy_(dr_.order_var,:),'exact'); - js(i) = strmatch(vj,lgy_,'exact'); + for i = 1:length(vvarvecm) + vj = vvarvecm{i}; + jxj(i) = strmatch(vj, lgy_(dr_.order_var), 'exact'); + js(i) = strmatch(vj, lgy_, 'exact'); yss(i,:,:)=repmat(sto_ys(:,js(i))',[gend,1]); end if exist('xparam1','var') @@ -213,7 +207,6 @@ if ~loadSA r2_MC(j,:) = 1-mean((yobs(:,istart:end,j)'-y0(:,istart:end,j)').^2)./mean((yobs(:,istart:end,j)').^2); end if exist('xparam1_mean','var') - %eval(['rmse_pmean(i) = sqrt(mean((',vj,'(fobs-1+istart:fobs-1+nobs)-y0M(istart:end-1)).^2));']) [alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff,aK] = DsgeSmoother(xparam1_mean,gend,Y,data_index,missing_value,M_,oo_,options_,bayestopt_,estim_params_); y0 = reshape( squeeze(aK(1,jxj,1:gend)),[gend length(jxj)]);% + kron(ys_mean(js),ones(1,gend))); yobs = transpose( ahat(jxj,:));% + kron(ys_mean(js),ones(1,gend))); @@ -260,14 +253,14 @@ else nfilt=floor(pfilt*nruns); end % smirnov tests -nfilt0=nfilt*ones(size(vvarvecm,1),1); +nfilt0 = nfilt*ones(length(vvarvecm), 1); logpo2=logpo2(:); if ~options_.opt_gsa.ppost [dum, ipost]=sort(-logpo2); [dum, ilik]=sort(-likelihood); end -%% visual scatter analysis! +% visual scatter analysis! if options_.opt_gsa.ppost tmp_title='R2 Posterior:'; atitle='R2 Posterior:'; @@ -291,8 +284,7 @@ options_scatter.amcf_name = asname; options_scatter.amcf_title = atitle; options_scatter.title = tmp_title; scatter_analysis(r2_MC, x,options_scatter, options_); -%% end of visual scatter analysis - +% end of visual scatter analysis if ~options_.opt_gsa.ppost && options_.opt_gsa.lik_only if options_.opt_gsa.pprior @@ -307,12 +299,12 @@ if ~options_.opt_gsa.ppost && options_.opt_gsa.lik_only options_mcf.alpha2 = alpha2; if options_.TeX [pnames,pnames_tex]=get_LaTeX_parameter_names(M_,options_,estim_params_,bayestopt_); - options_mcf.param_names = char(pnames); - options_mcf.param_names_tex = char(pnames_tex); + options_mcf.param_names = pnames; + options_mcf.param_names_tex = pnames_tex; else [pnames]=get_LaTeX_parameter_names(M_,options_,estim_params_,bayestopt_); - options_mcf.param_names = char(pnames); - options_mcf.param_names_tex = []; + options_mcf.param_names = pnames; + options_mcf.param_names_tex = {}; end options_mcf.fname_ = fname_; options_mcf.OutputDirectoryName = OutDir; @@ -322,7 +314,6 @@ if ~options_.opt_gsa.ppost && options_.opt_gsa.lik_only options_mcf.beha_title = 'better posterior kernel'; options_mcf.nobeha_title = 'worse posterior kernel'; mcf_analysis(x, ipost(1:nfilt), ipost(nfilt+1:end), options_mcf, options_); - if options_.opt_gsa.pprior anam = 'rmse_prior_lik'; atitle = 'RMSE prior: Log Likelihood Kernel'; @@ -351,22 +342,21 @@ else r2_txt=NaN(1,size(r2_MC,2)); end else - %nfilt0(i)=length(find(rmse_MC(:,i)0.0001 ); - vvarvecm=vvarvecm(ivar,:); - rmse_MC=rmse_MC(:,ivar); - + vvarvecm = vvarvecm(ivar); + rmse_MC = rmse_MC(:,ivar); skipline() - % if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior, disp(['Sample filtered the ',num2str(pfilt*100),'% best RMSE''s for each observed series ...' ]) - % else - % disp(['Sample filtered the best RMSE''s smaller than RMSE at the posterior mean ...' ]) - % end - % figure, boxplot(rmse_MC) - % set(gca,'xticklabel',vvarvecm) - % saveas(gcf,[fname_,'_SA_RMSE']) - skipline(2) disp('RMSE ranges after filtering:') title_string='RMSE ranges after filtering:'; if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior - headers=strvcat('Variable','min','max','min','max','posterior mode'); - headers_tex=strvcat('\text{Variable}','\text{min}','\text{max}','\text{min}','\text{max}','\text{posterior mode}'); + headers = {'Variable'; 'min'; 'max'; 'min'; 'max'; 'posterior mode'}; + headers_tex = {'\text{Variable}'; '\text{min}'; '\text{max}'; '\text{min}'; '\text{max}'; '\text{posterior mode}'}; else - headers=strvcat('Variable','min','max','min','max','posterior mean'); - headers_tex=strvcat('\text{Variable}','\text{min}','\text{max}','\text{min}','\text{max}','\text{posterior mean}'); + headers = {'Variable'; 'min'; 'max'; 'min'; 'max'; 'posterior mean'}; + headers_tex = {'\text{Variable}'; '\text{min}'; '\text{max}'; '\text{min}'; '\text{max}'; '\text{posterior mean}'}; end - data_mat=NaN(size(vvarvecm,1),5); - for j=1:size(vvarvecm,1) + data_mat=NaN(length(vvarvecm),5); + for j = 1:length(vvarvecm) data_mat(j,:)=[min(rmse_MC(ixx(1:nfilt0(j),j),j)) ... max(rmse_MC(ixx(1:nfilt0(j),j),j)) ... min(rmse_MC(ixx(nfilt0(j)+1:end,j),j)) ... @@ -610,10 +580,10 @@ else rmse_txt(j)]; end %get formatting for additional header line - val_width=15; - val_precis=5; - label_width = max(size(deblank(char(headers(1,:),vvarvecm)),2)+2,0); - label_format_leftbound = sprintf('%%-%ds',label_width); + val_width = 15; + val_precis = 5; + label_width = max(cellofchararraymaxlength(vertcat(headers{1}, vvarvecm))+2, 0); + label_format_leftbound = sprintf('%%-%ds', label_width); if all(~isfinite(data_mat)) values_length = 4; else @@ -622,61 +592,55 @@ else if any(data_mat) < 0 %add one character for minus sign values_length = values_length+1; end - - headers_length = max(size(deblank(headers(2:end,:)),2)); + headers_length = cellofchararraymaxlength(headers(2:end)); if ~isempty(val_width) - val_width = max(max(headers_length,values_length)+2,val_width); + val_width = max(max(headers_length,values_length)+2, val_width); else - val_width = max(headers_length,values_length)+2; + val_width = max(headers_length, values_length)+2; end value_format = sprintf('%%%d.%df',val_width,val_precis); header_string_format = sprintf('%%%ds',val_width); - if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior optional_header=sprintf([label_format_leftbound,header_string_format,header_string_format,header_string_format,header_string_format],'','',['best ',num2str(pfilt*100),'% filtered'],'','remaining 90%'); else optional_header=sprintf([label_format_leftbound,header_string_format,header_string_format,header_string_format,header_string_format],'','','best filtered','','remaining'); end - dyntable(options_,title_string,headers,vvarvecm,data_mat, 0, val_width, val_precis,optional_header); + dyntable(options_, title_string, headers, vvarvecm, data_mat, 0, val_width, val_precis,optional_header); if options_.TeX if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior optional_header={[' & \multicolumn{2}{c}{best ',num2str(pfilt*100),' filtered} & \multicolumn{2}{c}{remaining 90\%}\\']}; else optional_header={[' & \multicolumn{2}{c}{best filtered} & \multicolumn{2}{c}{remaining}\\']}; end - dyn_latex_table(M_,options_,title_string,'RMSE_ranges_after_filtering',headers_tex,vvarvecm_tex,data_mat,0,val_width,val_precis,optional_header); + dyn_latex_table(M_, options_, title_string, 'RMSE_ranges_after_filtering', headers_tex, vvarvecm_tex, data_mat, 0, val_width, val_precis, optional_header); end - - %%%%% R2 table + % R2 table vvarvecm=vvarvecm0; skipline() title_string='R2 over the MC sample:'; data_mat=[min(r2_MC)' max(r2_MC)']; - headers=strvcat('Variable','min yr R2','max yr R2'); - dyntable(options_,title_string,headers,vvarvecm,data_mat, 0, 15, 5); + headers = {'Variable'; 'min yr R2'; 'max yr R2'}; + dyntable(options_, title_string, headers, vvarvecm, data_mat, 0, 15, 5); if options_.TeX - headers_tex=strvcat('\text{Variable}','\text{min yr R2}','\text{max yr R2}'); - dyn_latex_table(M_,options_,title_string,'R2_MC',headers_tex,vvarvecm_tex,data_mat,0,15,5); + headers_tex = {'\text{Variable}'; '\text{min yr R2}'; '\text{max yr R2}'}; + dyn_latex_table(M_, options_, title_string, 'R2_MC', headers_tex, vvarvecm_tex, data_mat, 0, 15, 5); end - r2_MC=r2_MC(:,ivar); - vvarvecm=vvarvecm(ivar,:); - + vvarvecm=vvarvecm(ivar); skipline() disp(['Sample filtered the ',num2str(pfilt*100),'% best R2''s for each observed series ...' ]) - skipline() disp('R2 ranges after filtering:') title_string='R2 ranges after filtering:'; if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior - headers=strvcat('Variable','min','max','min','max','posterior mode'); - headers_tex=strvcat('\text{Variable}','\text{min}','\text{max}','\text{min}','\text{max}','\text{posterior mode}'); + headers = {'Variable'; 'min'; 'max'; 'min'; 'max'; 'posterior mode'}; + headers_tex = {'\text{Variable}'; '\text{min}'; '\text{max}'; '\text{min}'; '\text{max}'; '\text{posterior mode}'}; else - headers=strvcat('Variable','min','max','min','max','posterior mean'); - headers_tex=strvcat('\text{Variable}','\text{min}','\text{max}','\text{min}','\text{max}','\text{posterior mean}'); + headers = {'Variable'; 'min'; 'max'; 'min'; 'max'; 'posterior mean'}; + headers_tex = {'\text{Variable}'; '\text{min}'; '\text{max}'; '\text{min}'; '\text{max}'; '\text{posterior mean}'}; end - data_mat=NaN(size(vvarvecm,1),5); - for j=1:size(vvarvecm,1) + data_mat=NaN(length(vvarvecm),5); + for j = 1:length(vvarvecm) data_mat(j,:)=[min(r2_MC(ixx(1:nfilt0(j),j),j)) ... max(r2_MC(ixx(1:nfilt0(j),j),j)) ... min(r2_MC(ixx(nfilt0(j)+1:end,j),j)) ... @@ -684,10 +648,10 @@ else r2_txt(j)]; end %get formatting for additional header line - val_width=15; - val_precis=5; - label_width = max(size(deblank(char(headers(1,:),vvarvecm)),2)+2,0); - label_format_leftbound = sprintf('%%-%ds',label_width); + val_width = 15; + val_precis = 5; + label_width = max(cellofchararraymaxlength(vertcat(headers{1}, vvarvecm))+2, 0); + label_format_leftbound = sprintf('%%-%ds', label_width); if all(~isfinite(data_mat)) values_length = 4; else @@ -696,35 +660,32 @@ else if any(data_mat) < 0 %add one character for minus sign values_length = values_length+1; end - - headers_length = max(size(deblank(headers(2:end,:)),2)); + headers_length = cellofchararraymaxlength(headers(2:end)); if ~isempty(val_width) - val_width = max(max(headers_length,values_length)+2,val_width); + val_width = max(max(headers_length, values_length)+2, val_width); else - val_width = max(headers_length,values_length)+2; + val_width = max(headers_length, values_length)+2; end value_format = sprintf('%%%d.%df',val_width,val_precis); header_string_format = sprintf('%%%ds',val_width); if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior - optional_header=sprintf([label_format_leftbound,header_string_format,header_string_format,header_string_format,header_string_format],'','',['best ',num2str(pfilt*100),'% filtered'],'','remaining 90%'); + optional_header = sprintf([label_format_leftbound,header_string_format,header_string_format,header_string_format,header_string_format],'','',['best ',num2str(pfilt*100),'% filtered'],'','remaining 90%'); else - optional_header=sprintf([label_format_leftbound,header_string_format,header_string_format,header_string_format,header_string_format],'','','best filtered','','remaining'); + optional_header = sprintf([label_format_leftbound,header_string_format,header_string_format,header_string_format,header_string_format],'','','best filtered','','remaining'); end - dyntable(options_,title_string,headers,vvarvecm,data_mat, 0, val_width, val_precis,optional_header); + dyntable(options_, title_string, headers, vvarvecm, data_mat, 0, val_width, val_precis, optional_header); if options_.TeX - if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior - optional_header={[' & \multicolumn{2}{c}{best ',num2str(pfilt*100),' filtered} & \multicolumn{2}{c}{remaining 90\%}\\']}; + if ~options_.opt_gsa.ppost && options_.opt_gsa.pprior + optional_header = {[' & \multicolumn{2}{c}{best ',num2str(pfilt*100),' filtered} & \multicolumn{2}{c}{remaining 90\%}\\']}; else - optional_header={[' & \multicolumn{2}{c}{best filtered} & \multicolumn{2}{c}{remaining}\\']}; + optional_header = {[' & \multicolumn{2}{c}{best filtered} & \multicolumn{2}{c}{remaining}\\']}; end - dyn_latex_table(M_,options_,title_string,'R2_ranges_after_filtering',headers_tex,vvarvecm_tex,data_mat,0,val_width,val_precis,optional_header); + dyn_latex_table(M_, options_, title_string, 'R2_ranges_after_filtering', headers_tex, vvarvecm_tex, data_mat, 0, val_width, val_precis, optional_header); end - - - %%%% R2 table - SP=zeros(npar+nshock,size(vvarvecm,1)); - for j=1:size(vvarvecm,1) + % R2 table + SP = zeros(npar+nshock, length(vvarvecm)); + for j = 1:length(vvarvecm) ns=find(PP(:,j)1),:); - snam=param_names(find(nsp>0),:); - % snam0=bayestopt_.name(find(nsp==0)); - % snam1=bayestopt_.name(find(nsp==1)); - % snam2=bayestopt_.name(find(nsp>1)); - % snam=bayestopt_.name(find(nsp>0)); + snam0=param_names(find(nsp==0)); + snam1=param_names(find(nsp==1)); + snam2=param_names(find(nsp>1)); + snam=param_names(find(nsp>0)); nsnam=(find(nsp>1)); - skipline(2) disp('These parameters do not affect significantly the fit of ANY observed series:') - disp(snam0) + disp(char(snam0)) skipline() disp('These parameters affect ONE single observed series:') - disp(snam1) + disp(char(snam1)) skipline() disp('These parameters affect MORE THAN ONE observed series: trade off exists!') - disp(snam2) - - - %pnam=bayestopt_.name(end-estim_params_.np+1:end); + disp(char(snam2)) pnam=bayestopt_.name; - % plot trade-offs if ~options_.nograph - a00=jet(size(vvarvecm,1)); + a00=jet(length(vvarvecm)); if options_.opt_gsa.ppost temp_name='RMSE Posterior Tradeoffs:'; atitle='RMSE Posterior Map:'; @@ -783,33 +735,30 @@ else options_mcf.param_names_tex = param_names_tex; options_mcf.fname_ = fname_; options_mcf.OutputDirectoryName = OutDir; - for iy=1:size(vvarvecm,1) - options_mcf.amcf_name = [asname '_' deblank(vvarvecm(iy,:)) '_map' ]; - options_mcf.amcf_title = [atitle ' ' deblank(vvarvecm(iy,:))]; - options_mcf.beha_title = ['better fit of ' deblank(vvarvecm(iy,:))]; - options_mcf.nobeha_title = ['worse fit of ' deblank(vvarvecm(iy,:))]; - options_mcf.title = ['the fit of ' deblank(vvarvecm(iy,:))]; + for iy = 1:length(vvarvecm) + options_mcf.amcf_name = [asname '_' vvarvecm{iy} '_map' ]; + options_mcf.amcf_title = [atitle ' ' vvarvecm{iy}]; + options_mcf.beha_title = ['better fit of ' vvarvecm{iy}]; + options_mcf.nobeha_title = ['worse fit of ' vvarvecm{iy}]; + options_mcf.title = ['the fit of ' vvarvecm{iy}]; mcf_analysis(x, ixx(1:nfilt0(iy),iy), ixx(nfilt0(iy)+1:end,iy), options_mcf, options_); end - for iy=1:size(vvarvecm,1) + for iy = 1:length(vvarvecm) ipar = find(any(squeeze(PPV(iy,:,:))alphaPC); - % % if ~isempty(i2), - % % j2=j2+1; - % % if mod(j2,12)==1, - % % ifig=ifig+1; - % % figure('name',['PCA of the filtered sample ',deblank(vvarvecm(i,:)),' ',num2str(ifig)]), - % % end - % % subplot(3,4,j2-(ifig-1)*12) - % % bar(pc(i2,j)), - % % set(gca,'xticklabel',bayestopt_.name(i2)), - % % set(gca,'xtick',[1:length(i2)]) - % % title(['PC ',num2str(j),'. Explained ',num2str(explained(j)),'%']) - % % end - % % if (mod(j2,12)==0 | j==(npar+nshock)) & j2, - % % saveas(gcf,[fname_,'_SA_PCA_',deblank(vvarvecm(i,:)),'_',int2str(ifig)]) - % % end - % % end - % % close all - % end - end function []=create_TeX_loader(options_,figpath,label_number,caption,label_name,scale_factor) diff --git a/matlab/gsa/map_calibration.m b/matlab/gsa/map_calibration.m index c7f707d49..7f319610e 100644 --- a/matlab/gsa/map_calibration.m +++ b/matlab/gsa/map_calibration.m @@ -5,7 +5,7 @@ function map_calibration(OutputDirectoryName, Model, DynareOptions, DynareResult % marco.ratto@ec.europa.eu % Copyright (C) 2014-2016 European Commission -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -48,9 +48,9 @@ init = ~DynareOptions.opt_gsa.load_stab; options_mcf.pvalue_ks = DynareOptions.opt_gsa.pvalue_ks; options_mcf.pvalue_corr = DynareOptions.opt_gsa.pvalue_corr; options_mcf.alpha2 = DynareOptions.opt_gsa.alpha2_stab; -options_mcf.param_names = char(pnames); +options_mcf.param_names = pnames; if DynareOptions.TeX - options_mcf.param_names_tex=char(pnames_tex); + options_mcf.param_names_tex = pnames_tex; end options_mcf.fname_ = fname_; options_mcf.OutputDirectoryName = OutputDirectoryName; @@ -375,11 +375,11 @@ if ~isempty(indx_moment) name{jj,1} = param_name_temp; end end - options_mcf.param_names = char(name); + options_mcf.param_names = name; if DynareOptions.TeX - options_mcf.param_names_tex = char(name_tex); + options_mcf.param_names_tex = name_tex; end - options_mcf.param_names = char(BayesInfo.name); + options_mcf.param_names = BayesInfo.name; all_moment_couples = cellstr([char(endo_prior_restrictions.moment(:,1)) char(endo_prior_restrictions.moment(:,2))]); moment_couples = unique(all_moment_couples); nbr_moment_couples = size(moment_couples,1); diff --git a/matlab/gsa/map_ident_.m b/matlab/gsa/map_ident_.m index fa23574dd..12ed584d5 100644 --- a/matlab/gsa/map_ident_.m +++ b/matlab/gsa/map_ident_.m @@ -5,7 +5,7 @@ function map_ident_(OutputDirectoryName,opt_gsa) % marco.ratto@ec.europa.eu % Copyright (C) 2012-2016 European Commission -% Copyright (C) 2012-2017 Dynare Team +% Copyright (C) 2012-2018 Dynare Team % % This file is part of Dynare. % @@ -37,7 +37,7 @@ else gsa_flag=-2; end -pnames = M_.param_names(estim_params_.param_vals(:,1),:); +pnames = M_.param_names(estim_params_.param_vals(:,1)); if opt_gsa.pprior filetoload=[OutputDirectoryName '/' fname_ '_prior']; @@ -106,7 +106,7 @@ if opt_gsa.load_ident_files==0 end xlabel(' ') ylabel(' ') - title(M_.exo_names(j,:),'interpreter','none') + title(M_.exo_names{j},'interpreter','none') if mod(j,6)==0 | j==M_.exo_nbr dyn_saveas(hh,[OutputDirectoryName,'/',fname_,'_vdec_exo_',int2str(ifig)],options_.nodisplay,options_.graph_format); create_TeX_loader(options_,[OutputDirectoryName,'/',fname_,'_vdec_exo_',int2str(ifig)],ifig,['Variance decomposition shocks'],'vdec_exo',options_.figures.textwidth*min(iplo/3,1)) diff --git a/matlab/gsa/mc_moments.m b/matlab/gsa/mc_moments.m index b7464a7e0..14d051eda 100644 --- a/matlab/gsa/mc_moments.m +++ b/matlab/gsa/mc_moments.m @@ -1,6 +1,6 @@ function [vdec, cc, ac] = mc_moments(mm, ss, dr) -% Copyright (C) 2012-2017 Dynare Team +% Copyright (C) 2012-2018 Dynare Team % % This file is part of Dynare. % @@ -20,7 +20,7 @@ function [vdec, cc, ac] = mc_moments(mm, ss, dr) global options_ M_ estim_params_ oo_ [nr1, nc1, nsam] = size(mm); -nobs=size(options_.varobs,2); +nobs=length(options_.varobs); disp('Computing theoretical moments ...') h = dyn_waitbar(0,'Theoretical moments ...'); vdec = zeros(nobs,M_.exo_nbr,nsam); diff --git a/matlab/gsa/mcf_analysis.m b/matlab/gsa/mcf_analysis.m index c4de17b8f..cec1054cd 100644 --- a/matlab/gsa/mcf_analysis.m +++ b/matlab/gsa/mcf_analysis.m @@ -6,7 +6,7 @@ function indmcf = mcf_analysis(lpmat, ibeha, inobeha, options_mcf, DynareOptions % % Copyright (C) 2014 European Commission -% Copyright (C) 2016-2017 Dynare Team +% Copyright (C) 2016-2018 Dynare Team % % This file is part of Dynare. % @@ -53,13 +53,13 @@ indmcf=find(proba0 || length(iwrong)>0 end end if options_.TeX - options_mcf.param_names_tex = char(name_tex); + options_mcf.param_names_tex = name_tex; end - options_mcf.param_names = char(name); + options_mcf.param_names = name; options_mcf.amcf_name = acalibname; options_mcf.amcf_title = acalibtitle; options_mcf.beha_title = 'prior IRF/moment calibration'; diff --git a/matlab/gsa/stab_map_2.m b/matlab/gsa/stab_map_2.m index f4b958355..5fdfa310b 100644 --- a/matlab/gsa/stab_map_2.m +++ b/matlab/gsa/stab_map_2.m @@ -6,7 +6,7 @@ function indcorr = stab_map_2(x,alpha2, pvalue_crit, fnam, dirname,xparam1,figti % marco.ratto@ec.europa.eu % Copyright (C) 2011-2016 European Commission -% Copyright (C) 2011-2017 Dynare Team +% Copyright (C) 2011-2018 Dynare Team % This file is part of Dynare. % % Dynare is free software: you can redistribute it and/or modify @@ -183,10 +183,10 @@ end if j2==0 disp(['No correlation term with pvalue <', num2str(pvalue_crit),' and |corr. coef.| >',num2str(alpha2),' found for ',fnam]) else - headers=strvcat('Parameters','corrcoef'); - dyntable(options_,title_string,headers,char(name),data_mat, 0, 7, 3); + headers={'Parameters'; 'corrcoef'}; + dyntable(options_,title_string,headers, name, data_mat, 0, 7, 3); if options_.TeX - dyn_latex_table(M_,options_,title_string_tex,fig_nam_tex_table,headers,char(name_tex),data_mat,0,7,3); + dyn_latex_table(M_, options_, title_string_tex, fig_nam_tex_table, headers, name_tex, data_mat, 0, 7, 3); end end %close all diff --git a/matlab/gsa/th_moments.m b/matlab/gsa/th_moments.m index 9b886e851..ff0324da8 100644 --- a/matlab/gsa/th_moments.m +++ b/matlab/gsa/th_moments.m @@ -1,7 +1,7 @@ function [vdec, corr, autocorr, z, zz] = th_moments(dr,var_list) % [vdec, corr, autocorr, z, zz] = th_moments(dr,var_list) -% Copyright (C) 2012-2017 Dynare Team +% Copyright (C) 2012-2018 Dynare Team % % This file is part of Dynare. % @@ -20,14 +20,14 @@ function [vdec, corr, autocorr, z, zz] = th_moments(dr,var_list) global M_ oo_ options_ -nvar = size(var_list,2); +nvar = length(var_list); if nvar == 0 nvar = length(dr.order_var); ivar = [1:nvar]'; else ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list{:,i},M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) error(['One of the variables specified does not exist']) ; else diff --git a/matlab/histvalf.m b/matlab/histvalf.m index 580c9be92..e9fa28946 100644 --- a/matlab/histvalf.m +++ b/matlab/histvalf.m @@ -1,6 +1,6 @@ function histvalf(fname) -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -61,10 +61,10 @@ for i = 1:length(outvars) end if M_.aux_vars(i).type == 1 % Endogenous - orig_var = deblank(M_.endo_names(M_.aux_vars(i).orig_index, :)); + orig_var = M_.endo_names{M_.aux_vars(i).orig_index}; else % Exogenous - orig_var = deblank(M_.exo_names(M_.aux_vars(i).orig_index, :)); + orig_var = M_.exo_names{M_.aux_vars(i).orig_index}; end if strcmp(orig_var, ov) && M_.aux_vars(i).orig_lead_lag == lead_lag j = M_.aux_vars(i).endo_index; diff --git a/matlab/homotopy2.m b/matlab/homotopy2.m index 7ec87258d..f43d4fffc 100644 --- a/matlab/homotopy2.m +++ b/matlab/homotopy2.m @@ -25,7 +25,7 @@ function homotopy2(values, step_nbr) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -82,11 +82,11 @@ end for i = 1:nv switch values(i,1) case 1 - varname = M_.exo_names(values(i,2), :); + varname = M_.exo_names{values(i,2)}; case 2 - varname = M_.exo_det_names(values(i,2), :); + varname = M_.exo_det_names{values(i,2)}; case 4 - varname = M_.param_names(values(i,2), :); + varname = M_.param_names{values(i,2)}; end for v = oldvalues(i):(values(i,4)-oldvalues(i))/step_nbr:values(i,4) switch values(i,1) @@ -98,7 +98,7 @@ for i = 1:nv M_.params(values(i,2)) = v; end - disp([ 'HOMOTOPY mode 2: lauching solver with ' deblank(varname) ' = ' num2str(v) ' ...']) + disp([ 'HOMOTOPY mode 2: lauching solver with ' varname ' = ' num2str(v) ' ...']) oo_.steady_state = steady_(M_,options_,oo_); end diff --git a/matlab/ident_bruteforce.m b/matlab/ident_bruteforce.m index 34725ade4..742498256 100644 --- a/matlab/ident_bruteforce.m +++ b/matlab/ident_bruteforce.m @@ -17,7 +17,7 @@ function [pars, cosnJ] = ident_bruteforce(J,n,TeX, pnames_TeX,tittxt) % pars : cell array with groupf of params for each column of J for 1 to n % cosnJ : the cosn of each column with the selected group of columns -% Copyright (C) 2009-2017 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -105,13 +105,13 @@ for ll = 1:n plist=''; for ii=1:ll if ~isnan(pars{i,ll}(ii)) - plist = [plist ' $' pnames_TeX(pars{i,ll}(ii),:) '\;\; $ ']; + plist = [plist ' $' pnames_TeX{pars{i,ll}(ii)} '\;\; $ ']; else plist = [plist ' ---- ']; end end fprintf(fidTeX,'$%s$ & [%s] & %7.3f \\\\ \n',... - pnames_TeX(i,:),... + pnames_TeX{i},... plist,... cosnJ(i,ll)); end diff --git a/matlab/imcforecast.m b/matlab/imcforecast.m index 3f77a3f2f..0f7e2ffce 100644 --- a/matlab/imcforecast.m +++ b/matlab/imcforecast.m @@ -26,7 +26,7 @@ function imcforecast(constrained_paths, constrained_vars, options_cond_fcst) % [1] Results are stored in a structure which is saved in a mat file called conditional_forecasts.mat. % [2] Use the function plot_icforecast to plot the results. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -146,8 +146,8 @@ if estimated_model end % add trend to constant for obs_iter=1:length(options_.varobs) - j = strmatch(options_.varobs{obs_iter},M_.endo_names,'exact'); - constant(j,:) = constant(j,:)+trend_addition(obs_iter,:); + j = strmatch(options_.varobs{obs_iter}, M_.endo_names, 'exact'); + constant(j,:) = constant(j,:) + trend_addition(obs_iter,:); end trend = constant(oo_.dr.order_var,:); InitState(:,1) = atT(:,end); @@ -226,7 +226,7 @@ jdx = []; for i = 1:n1 idx = [idx ; constrained_vars(i,:)]; % idx = [idx ; oo_.dr.inv_order_var(constrained_vars(i,:))]; - jdx = [jdx ; strmatch(deblank(options_cond_fcst.controlled_varexo(i,:)),M_.exo_names,'exact')]; + jdx = [jdx ; strmatch(options_cond_fcst.controlled_varexo{i},M_.exo_names,'exact')]; end mv = zeros(n1,NumberOfStates); mu = zeros(ExoSize,n2); @@ -265,15 +265,15 @@ forecasts.controlled_variables = constrained_vars; forecasts.instruments = options_cond_fcst.controlled_varexo; for i = 1:EndoSize - forecasts.cond.Mean.(deblank(M_.endo_names(oo_.dr.order_var(i),:)))= mFORCS1(i,:)'; + forecasts.cond.Mean.(M_.endo_names{oo_.dr.order_var(i)}) = mFORCS1(i,:)'; tmp = sort(squeeze(FORCS1(i,:,:))'); - forecasts.cond.ci.(deblank(M_.endo_names(oo_.dr.order_var(i),:))) = [tmp(t1,:)' ,tmp(t2,:)' ]'; + forecasts.cond.ci.(M_.endo_names{oo_.dr.order_var(i)}) = [tmp(t1,:)' ,tmp(t2,:)' ]'; end for i = 1:n1 - forecasts.controlled_exo_variables.Mean.(deblank(options_cond_fcst.controlled_varexo(i,:))) = mFORCS1_shocks(i,:)'; + forecasts.controlled_exo_variables.Mean.(options_cond_fcst.controlled_varexo{i}) = mFORCS1_shocks(i,:)'; tmp = sort(squeeze(FORCS1_shocks(i,:,:))'); - forecasts.controlled_exo_variables.ci.(deblank(options_cond_fcst.controlled_varexo(i,:))) = [tmp(t1,:)' ,tmp(t2,:)' ]'; + forecasts.controlled_exo_variables.ci.(options_cond_fcst.controlled_varexo{i}) = [tmp(t1,:)' ,tmp(t2,:)' ]'; end clear FORCS1 mFORCS1_shocks; @@ -292,9 +292,9 @@ end mFORCS2 = mean(FORCS2,3); for i = 1:EndoSize - forecasts.uncond.Mean.(deblank(M_.endo_names(oo_.dr.order_var(i),:)))= mFORCS2(i,:)'; + forecasts.uncond.Mean.(M_.endo_names{oo_.dr.order_var(i)})= mFORCS2(i,:)'; tmp = sort(squeeze(FORCS2(i,:,:))'); - forecasts.uncond.ci.(deblank(M_.endo_names(oo_.dr.order_var(i),:))) = [tmp(t1,:)' ,tmp(t2,:)' ]'; + forecasts.uncond.ci.(M_.endo_names{oo_.dr.order_var(i)}) = [tmp(t1,:)' ,tmp(t2,:)' ]'; end forecasts.graph.title=graph_title; forecasts.graph.fname=M_.fname; diff --git a/matlab/init_plan.m b/matlab/init_plan.m index c82433be3..2ae801784 100644 --- a/matlab/init_plan.m +++ b/matlab/init_plan.m @@ -9,7 +9,7 @@ function plan = init_plan(date) % plan [structure] Returns a structure containing a new forecast scenario % % -% Copyright (C) 2013-2017 Dynare Team +% Copyright (C) 2013-2018 Dynare Team % % This file is part of Dynare. % @@ -29,10 +29,8 @@ global M_ plan = struct(); plan.date = date; plan.date_str = strings(date); -endo_names_length = size(M_.endo_names,2); -plan.endo_names = deblank(mat2cell(M_.endo_names(1:M_.orig_endo_nbr,:),ones(1,M_.orig_endo_nbr),endo_names_length)); -exo_names_length = size(M_.exo_names,2); -plan.exo_names = deblank(mat2cell(M_.exo_names(1:M_.exo_nbr,:),ones(1,M_.exo_nbr),exo_names_length)); +plan.endo_names = M_.endo_names(1:M_.orig_endo_nbr); +plan.exo_names = M_.exo_names(1:M_.exo_nbr); plan.constrained_vars_ = []; plan.constrained_paths_ = []; plan.constrained_date_ = []; diff --git a/matlab/initial_condition_decomposition.m b/matlab/initial_condition_decomposition.m index cee5335a8..ff6c22433 100644 --- a/matlab/initial_condition_decomposition.m +++ b/matlab/initial_condition_decomposition.m @@ -8,20 +8,20 @@ function oo_ = initial_condition_decomposition(M_,oo_,options_,varlist,bayestopt % in the order of declaration, i.e. M_.endo_names. % % INPUTS -% M_: [structure] Definition of the model -% oo_: [structure] Storage of results -% options_: [structure] Options -% varlist: [char] List of variables -% bayestopt_: [structure] describing the priors -% estim_params_: [structure] characterizing parameters to be estimated +% M_: [structure] Definition of the model +% oo_: [structure] Storage of results +% options_: [structure] Options +% varlist: [cell of char array] List of variables +% bayestopt_: [structure] Description of the priors +% estim_params_: [structure] Estimated parameters % % OUTPUTS -% oo_: [structure] Storage of results +% oo_: [structure] Storage of results % % SPECIAL REQUIREMENTS % none -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -46,12 +46,12 @@ options_.plot_shock_decomp.plot_init_date = options_.initial_condition_decomp.pl options_.plot_shock_decomp.plot_end_date = options_.initial_condition_decomp.plot_end_date; % indices of endogenous variables -if size(varlist,1) == 0 - varlist = M_.endo_names(1:M_.orig_endo_nbr,:); +if isempty(varlist) + varlist = M_.endo_names(1:M_.orig_endo_nbr); end -[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names); -varlist=varlist(index_uniques,:); +[i_var, nvar, index_uniques] = varlist_indices(varlist, M_.endo_names); +varlist = varlist(index_uniques); % number of variables endo_nbr = M_.endo_nbr; @@ -89,7 +89,7 @@ if ~isfield(oo_,'initval_decomposition') B = dr.ghu; % initialization - gend = size(oo.SmoothedShocks.(deblank(M_.exo_names(1,:))),1); %+options_.forecast; + gend = length(oo.SmoothedShocks.(M_.exo_names{1})); %+options_.forecast; z = zeros(endo_nbr,endo_nbr+2,gend); z(:,end,:) = Smoothed_Variables_deviation_from_mean; @@ -128,5 +128,5 @@ M_.exo_nbr = M_.endo_nbr; options_.plot_shock_decomp.screen_shocks=1; options_.plot_shock_decomp.use_shock_groups = ''; options_.plot_shock_decomp.fig_names='initval'; -plot_shock_decomposition(M_,oo,options_,varlist); +plot_shock_decomposition(M_, oo, options_, varlist); % end \ No newline at end of file diff --git a/matlab/initial_estimation_checks.m b/matlab/initial_estimation_checks.m index 7dfc4d9a2..bc7d9fb20 100644 --- a/matlab/initial_estimation_checks.m +++ b/matlab/initial_estimation_checks.m @@ -20,7 +20,7 @@ function DynareResults = initial_estimation_checks(objective_function,xparam1,Dy % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -73,7 +73,7 @@ if isfield(EstimatedParameters,'param_vals') && ~isempty(EstimatedParameters.par if ~isempty(changed_par_indices) fprintf('\nThe steady state file internally changed the values of the following estimated parameters:\n') - disp(Model.param_names(EstimatedParameters.param_vals(changed_par_indices,1),:)); + disp(char(Model.param_names(EstimatedParameters.param_vals(changed_par_indices,1)))) fprintf('This will override the parameter values drawn from the proposal density and may lead to wrong results.\n') fprintf('Check whether this is really intended.\n') warning('The steady state file internally changes the values of the estimated parameters.') diff --git a/matlab/initialize_from_mode.m b/matlab/initialize_from_mode.m index 4521ec255..35d643ab3 100644 --- a/matlab/initialize_from_mode.m +++ b/matlab/initialize_from_mode.m @@ -14,7 +14,7 @@ function estim_params_ = initialize_from_mode(fname,M_,estim_params_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -44,7 +44,7 @@ corrx = estim_params_.corrx; corrn = estim_params_.corrn; for i=1:length(parameter_names) name = parameter_names{i}; - k1 = strmatch(name,param_names,'exact'); + k1 = strmatch(name, param_names, 'exact'); if ~isempty(k1) k2 = find(param_vals(:,1) == k1); if ~isempty(k2) @@ -64,7 +64,7 @@ for i=1:length(parameter_names) M_.Sigma_e(k1,k1) = xparam1(i)^2; continue end - k1 = strmatch(name,endo_names,'exact'); + k1 = strmatch(name, endo_names, 'exact'); if ~isempty(k1) k2 = find(var_endo(:,1) == k1); if ~isempty(k2) @@ -85,8 +85,8 @@ for i=1:length(parameter_names) M_.Sigma_e(k1a,k1) = M_.Sigma_e(k1,k1a); continue end - k1 = strmatch(name(1:k3-1),endo_names,'exact'); - k1a = strmatch(name(k3+1:end),endo_names,'exact'); + k1 = strmatch(name(1:k3-1), endo_names, 'exact'); + k1a = strmatch(name(k3+1:end), endo_names, 'exact'); if ~isempty(k1) && ~isempty(k1a) k2 = find(corrn(:,1) == k1 & corrn(:,2) == k1a); if ~isempty(k2) diff --git a/matlab/initvalf.m b/matlab/initvalf.m index afffede43..33d0e3a02 100644 --- a/matlab/initvalf.m +++ b/matlab/initvalf.m @@ -13,7 +13,7 @@ function initvalf(fname_) % All variables local to this function have an underscore appended to % their name, to minimize clashes with model variables loaded by this function. -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -73,36 +73,36 @@ options_.initval_file = 1; oo_.endo_simul = []; oo_.exo_simul = []; -for i_=1:size(M_.endo_names,1) +for i_=1:length(M_.endo_names) if series_ == 1 - x_ = eval(M_.endo_names(i_,:)); + x_ = eval(M_.endo_names{i_}); if size(x_,2)>size(x_,1) %oo_.endo_simul must be collection of row vectors oo_.endo_simul = [oo_.endo_simul; x_]; else %transpose if column vector oo_.endo_simul = [oo_.endo_simul; x_']; end else - k_ = strmatch(deblank(M_.endo_names(i_,:)),names_v_,'exact'); + k_ = strmatch(M_.endo_names{i_}, names_v_, 'exact'); if isempty(k_) - error(['INITVAL_FILE: ' deblank(M_.endo_names(i_,:)) ' not found']) + error(['INITVAL_FILE: ' M_.endo_names{i_} ' not found']) end x_ = data_(:,k_); oo_.endo_simul = [oo_.endo_simul; x_']; end end -for i_=1:size(M_.exo_names,1) +for i_=1:length(M_.exo_names) if series_ == 1 - x_ = eval(M_.exo_names(i_,:) ); + x_ = eval(M_.exo_names{i_}); if size(x_,2)>size(x_,1) %oo_.endo_simul must be collection of row vectors oo_.exo_simul = [oo_.exo_simul x_']; else %if column vector oo_.exo_simul = [oo_.exo_simul x_]; end else - k_ = strmatch(deblank(M_.exo_names(i_,:)),names_v_,'exact'); + k_ = strmatch(M_.exo_names{i_}, names_v_, 'exact'); if isempty(k_) - error(['INITVAL_FILE: ' deblank(M_.exo_names(i_,:)) ' not found']) + error(['INITVAL_FILE: ' M_.exo_names{i_} ' not found']) end x_ = data_(:,k_); oo_.exo_simul = [oo_.exo_simul x_]; diff --git a/matlab/k_order_pert.m b/matlab/k_order_pert.m index 05c56eb37..596dc100f 100644 --- a/matlab/k_order_pert.m +++ b/matlab/k_order_pert.m @@ -1,7 +1,7 @@ function [dr,info] = k_order_pert(dr,M,options) % Compute decision rules using the k-order DLL from Dynare++ -% Copyright (C) 2009-2017 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -20,7 +20,12 @@ function [dr,info] = k_order_pert(dr,M,options) info = 0; -M.var_order_endo_names = M.endo_names(dr.order_var,:); +M.var_order_endo_names = M.endo_names(dr.order_var); + +% k_order_perturbation expects char array for the names of endogenous and +% exogenous variables (not cells). The mex needs to be fixed... +M.var_order_endo_names = char(M.var_order_endo_names); +M.exo_names = char(M.exo_names); order = options.order; endo_nbr = M.endo_nbr; diff --git a/matlab/lmmcp/get_complementarity_conditions.m b/matlab/lmmcp/get_complementarity_conditions.m index 8459c0514..6a1f2c1ed 100644 --- a/matlab/lmmcp/get_complementarity_conditions.m +++ b/matlab/lmmcp/get_complementarity_conditions.m @@ -12,7 +12,7 @@ function [lb,ub,eq_index] = get_complementarity_conditions(M,ramsey_policy) % from complementarity setup used in % perfect_foresight_mcp_problem.m -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -58,7 +58,7 @@ for i=1:size(etags,1) str = etags{i,3}; kop = strfind(etags{i,3},'<'); if ~isempty(kop) - k = find(strcmp(strtrim(str(1:kop-1)),cellstr(M.endo_names))); %get variable index with restriction + k = find(strcmp(strtrim(str(1:kop-1)), M.endo_names)); %get variable index with restriction if isempty(k) error(sprintf(['Complementarity condition %s: variable %s is ' ... 'not recognized'],etags{i,3},strtrim(str(1:kop-1)))) @@ -69,7 +69,7 @@ for i=1:size(etags,1) else kop = strfind(etags{i,3},'>'); if ~isempty(kop) - k = find(strcmp(strtrim(str(1:kop-1)),cellstr(M.endo_names))); %get variable index with restriction + k = find(strcmp(strtrim(str(1:kop-1)), M.endo_names)); %get variable index with restriction if isempty(k) error(sprintf(['Complementarity condition %s: variable %s is ' ... 'not recognized'],etags{i,3},strtrim(str(1:kop-1)))) diff --git a/matlab/lnsrch1.m b/matlab/lnsrch1.m index 09b128b91..780863848 100644 --- a/matlab/lnsrch1.m +++ b/matlab/lnsrch1.m @@ -24,7 +24,7 @@ function [x,f,fvec,check]=lnsrch1(xold, fold, g, p, stpmax, func, j1, j2, tolx, % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -58,14 +58,14 @@ if ~isfinite(summ) var_string=[]; Model=evalin('base','M_'); for ii=1:length(j2)-1 - var_string=[var_string, deblank(Model.endo_names(j2(ii),:)), ', ']; + var_string=[var_string, Model.endo_names{j2(ii)}, ', ']; end - var_string=[var_string, deblank(Model.endo_names(j2(end),:))]; + var_string=[var_string, Model.endo_names{j2(end)}]; fprintf('\nAn infinite element was encountered when trying to solve equation(s) %s \n',eq_number_string) fprintf('with respect to the variable(s): %s.\n',var_string) fprintf('The values of the endogenous variables when the problem was encountered were:\n') for ii=1:length(xold) - fprintf('%-s % 8.4g \n',Model.endo_names(ii,:),xold(ii)); + fprintf('%-s % 8.4g \n', Model.endo_names{ii}, xold(ii)); end skipline(); end diff --git a/matlab/load_mat_file_data_legacy.m b/matlab/load_mat_file_data_legacy.m index 356c57237..45c2819d6 100644 --- a/matlab/load_mat_file_data_legacy.m +++ b/matlab/load_mat_file_data_legacy.m @@ -1,6 +1,6 @@ function data = load_mat_file_data_legacy(datafile, varobs) -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -32,9 +32,9 @@ else data_mat=[]; for var_iter=1:length(varobs) try - data_mat=[data_mat vec(data_file.(varobs{1,var_iter}))]; + data_mat=[data_mat vec(data_file.(varobs{var_iter}))]; catch - error('makedataset: The variable %s does not have dimensions conformable with the previous one',varobs{1,var_iter}); + error(['makedataset: The variable %s does not have dimensions conformable with the previous one'], varobs{var_iter}); end end end diff --git a/matlab/marginal_density.m b/matlab/marginal_density.m index e5683da2c..1e8728161 100644 --- a/matlab/marginal_density.m +++ b/matlab/marginal_density.m @@ -15,7 +15,7 @@ function [marginal,oo_] = marginal_density(M_, options_, estim_params_, oo_, bay % SPECIAL REQUIREMENTS % none -% Copyright (C) 2005-2017 Dynare Team +% Copyright (C) 2005-2018 Dynare Team % % This file is part of Dynare. % @@ -167,7 +167,7 @@ if nvx ip = 1; for i=1:nvx k = estim_params_.var_exo(i,1); - name = deblank(M_.exo_names(k,:)); + name = M_.exo_names{k}; eval(['oo_.' field_name '_mode.shocks_std.' name ' = xparam1(ip);']); eval(['oo_.' field_name '_std_at_mode.shocks_std.' name ' = stdh(ip);']); ip = ip+1; @@ -188,7 +188,7 @@ if ncx for i=1:ncx k1 = estim_params_.corrx(i,1); k2 = estim_params_.corrx(i,2); - NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; + NAME = [M_.exo_names{k1} '_' M_.exo_names{k2}]; eval(['oo_.' field_name '_mode.shocks_corr.' NAME ' = xparam1(ip);']); eval(['oo_.' field_name '_std_at_mode.shocks_corr.' NAME ' = stdh(ip);']); ip = ip+1; @@ -200,7 +200,7 @@ if ncn for i=1:ncn k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; + NAME = [M_.endo_names{k1} '_' M_.endo_names{k2}]; eval(['oo_.' field_name '_mode.measurement_errors_corr.' NAME ' = xparam1(ip);']); eval(['oo_.' field_name '_std_at_mode.measurement_errors_corr.' NAME ' = stdh(ip);']); ip = ip+1; diff --git a/matlab/model_comparison.m b/matlab/model_comparison.m index 07935af6f..5fefd1123 100644 --- a/matlab/model_comparison.m +++ b/matlab/model_comparison.m @@ -20,7 +20,7 @@ function oo = model_comparison(ModelNames,ModelPriors,oo,options_,fname) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -114,42 +114,36 @@ lmpd = log(ModelPriors)+MarginalLogDensity; elmpd = exp(lmpd-maxval); % Now I display the posterior probabilities. -headers = char('Model',ShortModelNames{:}); +headers = vertcat('Model', ShortModelNames); if prior_flag - labels = char('Priors','Log Marginal Density','Bayes Ratio', ... - 'Posterior Model Probability'); - field_labels={'Prior','Log_Marginal_Density','Bayes_Ratio', ... - 'Posterior_Model_Probability'}; - values = [ModelPriors';MarginalLogDensity';exp(lmpd-lmpd(1))'; ... - elmpd'/sum(elmpd)]; + labels = {'Priors'; 'Log Marginal Density'; 'Bayes Ratio'; 'Posterior Model Probability'}; + field_labels={'Prior','Log_Marginal_Density','Bayes_Ratio', 'Posterior_Model_Probability'}; + values = [ModelPriors';MarginalLogDensity';exp(lmpd-lmpd(1))'; elmpd'/sum(elmpd)]; else - labels = char('Priors','Log Marginal Density','Bayes Ratio','Posterior Odds Ratio', ... - 'Posterior Model Probability'); + labels = {'Priors'; 'Log Marginal Density'; 'Bayes Ratio'; 'Posterior Odds Ratio'; 'Posterior Model Probability'}; field_labels={'Prior','Log_Marginal_Density','Bayes_Ratio','Posterior_Odds_Ratio','Posterior_Model_Probability'}; - values = [ModelPriors';MarginalLogDensity'; exp(MarginalLogDensity-MarginalLogDensity(1))'; ... - exp(lmpd-lmpd(1))'; elmpd'/sum(elmpd)]; + values = [ModelPriors';MarginalLogDensity'; exp(MarginalLogDensity-MarginalLogDensity(1))'; exp(lmpd-lmpd(1))'; elmpd'/sum(elmpd)]; end -for model_iter=1:NumberOfModels - for var_iter=1:size(labels,1) - oo.Model_Comparison.(deblank(headers(1+model_iter,:))).(field_labels{var_iter})=values(var_iter,model_iter); +for model_iter = 1:NumberOfModels + for var_iter = 1:length(labels) + oo.Model_Comparison.(headers{1+model_iter}).(field_labels{var_iter}) = values(var_iter, model_iter); end end -dyntable(options_,title,headers,labels,values, 0, 15, 6); +dyntable(options_, title, headers, labels, values, 0, 15, 6); if options_.TeX - M_temp.fname=fname; - M_temp.dname=fname; - headers_tex=''; - for ii=1:size(headers,1) - headers_tex=strvcat(headers_tex,strrep(headers(ii,:),'_', '\_')); + M_temp.fname = fname; + M_temp.dname = fname; + headers_tex = {}; + for ii = 1:length(headers) + headers_tex = vertcat(headers_tex, strrep(headers{ii}, '_', '\_')); end - labels_tex=''; - for ii=1:size(labels,1) - labels_tex=strvcat(labels_tex,strrep(labels(ii,:),' ', '\ ')); + labels_tex = {}; + for ii = 1:length(labels) + labels_tex = vertcat(labels_tex, strrep(labels{ii},' ', '\ ')); end - - dyn_latex_table(M_temp,options_,title,['model_comparison',type],headers_tex,labels_tex,values,0,16,6); + dyn_latex_table(M_temp, options_, title, ['model_comparison', type], headers_tex, labels_tex, values, 0, 16, 6); end function name = get_model_name_without_path(modelname) @@ -178,9 +172,9 @@ name = modelname(1:end-4); function modellist = get_short_names(modelnames) n = length(modelnames); -modellist = {}; +modellist = cell(n, 1); for i=1:n name = get_model_name_without_extension(modelnames{i}); name = get_model_name_without_path(name); - modellist = {modellist{:} name}; + modellist(i) = {name}; end diff --git a/matlab/model_diagnostics.m b/matlab/model_diagnostics.m index 673429115..bfca7dda6 100644 --- a/matlab/model_diagnostics.m +++ b/matlab/model_diagnostics.m @@ -16,7 +16,7 @@ function model_diagnostics(M,options,oo) % none. % -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -50,7 +50,7 @@ if ~isempty(k) disp(['MODEL_DIAGNOSTICS: The following endogenous variables aren''t present at ' ... 'the current period in the model:']) for i=1:length(k) - disp(endo_names(k(i),:)) + disp(endo_names{k(i)}) end end @@ -154,7 +154,7 @@ for b=1:nb break end end - disp(endo_names(k,:)) + disp(endo_names{k}) end neq = null(jacob'); n_rel = size(neq,2); diff --git a/matlab/model_info.m b/matlab/model_info.m index e27779225..bf17ce18e 100644 --- a/matlab/model_info.m +++ b/matlab/model_info.m @@ -1,7 +1,7 @@ function model_info(varargin) %function model_info; -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -57,9 +57,9 @@ if(isfield(M_,block_structre_str)) end for j=1:size_block if(j==1) - fprintf('| %10d | %10d | %30s | %14d | %-6d %24s |\n',i,size_block,Sym_type(block_structure.block(i).Simulation_Type),block_structure.block(i).equation(j),block_structure.block(i).variable(j),M_.endo_names(block_structure.block(i).variable(j),:)); + fprintf('| %10d | %10d | %30s | %14d | %-6d %24s |\n',i,size_block,Sym_type(block_structure.block(i).Simulation_Type),block_structure.block(i).equation(j),block_structure.block(i).variable(j),M_.endo_names{block_structure.block(i).variable(j)}); else - fprintf('| %10s | %10s | %30s | %14d | %-6d %24s |\n','','','',block_structure.block(i).equation(j),block_structure.block(i).variable(j),M_.endo_names(block_structure.block(i).variable(j),:)); + fprintf('| %10s | %10s | %30s | %14d | %-6d %24s |\n','','','',block_structure.block(i).equation(j),block_structure.block(i).variable(j),M_.endo_names{block_structure.block(i).variable(j)}); end end end @@ -76,7 +76,7 @@ if(isfield(M_,block_structre_str)) last=99999999; for i=1:size_IM if(last~=IM(i,2)) - fprintf('\n%-30s',M_.endo_names(IM(i,2),:)); + fprintf('\n%-30s',M_.endo_names{IM(i,2)}); end fprintf(' %5d',IM(i,1)); last=IM(i,2); @@ -100,7 +100,7 @@ if(isfield(M_,block_structre_str)) last=99999999; for i=1:size_IM if(last~=IM(i,2)) - fprintf('\n%-30s',M_.endo_names(IM(i,2),:)); + fprintf('\n%-30s',M_.endo_names{IM(i,2)}); end fprintf(' %5d',IM(i,1)); last=IM(i,2); @@ -122,16 +122,16 @@ if(isfield(M_,block_structre_str)) end end seq = 1: M_.endo_nbr; - blank = [ blanks(size(M_.endo_names,2)); blanks(size(M_.endo_names,2))]; + blank = [ blanks(cellofchararraymaxlength(M_.endo_names)); blanks(cellofchararraymaxlength(M_.endo_names))]; for i = 1:M_.endo_nbr if i == 1 - var_names = [blank; M_.endo_names(i,:)]; + var_names = char(blank, M_.endo_names{i}); else - var_names = [var_names; blank; M_.endo_names(i,:)]; + var_names = char(var_names, blank, M_.endo_names{i}); end end if incidence - topp = [char(kron(double(blanks(ceil(log10(M_.endo_nbr)))),ones(size(M_.endo_names,2),1))) var_names' ]; + topp = [char(kron(double(blanks(ceil(log10(M_.endo_nbr)))),ones(cellofchararraymaxlength(M_.endo_names),1))) var_names' ]; bott = [int2str(seq') blanks(M_.endo_nbr)' blanks(M_.endo_nbr)' IM_star]; fprintf('\n Gross incidence matrix\n'); fprintf(' =======================\n'); @@ -141,7 +141,7 @@ if(isfield(M_,block_structre_str)) IM_star_reordered = char([kron(ones(M_.endo_nbr, M_.endo_nbr-1), double(blanks(3))) double(blanks(M_.endo_nbr)')]); eq(block_structure.equation_reordered) = seq; va(block_structure.variable_reordered) = seq; - barre_blank = [ barre(size(M_.endo_names,2)); blanks(size(M_.endo_names,2))]; + barre_blank = [ barre(cellofchararraymaxlength(M_.endo_names)); blanks(cellofchararraymaxlength(M_.endo_names))]; cur_block = 1; for i = 1:M_.endo_nbr past_block = cur_block; @@ -149,16 +149,16 @@ if(isfield(M_,block_structre_str)) cur_block = cur_block + 1; end if i == 1 - var_names = [blank; M_.endo_names(block_structure.variable_reordered(i),:)]; + var_names = [blank; M_.endo_names{block_structure.variable_reordered(i)}]; else if past_block ~= cur_block - var_names = [var_names; barre_blank; M_.endo_names(block_structure.variable_reordered(i),:)]; + var_names = [var_names; barre_blank; M_.endo_names{block_structure.variable_reordered(i)}]; else - var_names = [var_names; blank; M_.endo_names(block_structure.variable_reordered(i),:)]; + var_names = [var_names; blank; M_.endo_names{block_structure.variable_reordered(i)}]; end end end - topp = [char(kron(double(blanks(ceil(log10(M_.endo_nbr)))),ones(size(M_.endo_names,2),1))) var_names' ]; + topp = [char(kron(double(blanks(ceil(log10(M_.endo_nbr)))),ones(cellofchararraymaxlength(M_.endo_names),1))) var_names' ]; n_state_var = length(M_.state_var); IM_state_var = zeros(n_state_var, n_state_var); inv_variable_reordered(block_structure.variable_reordered) = 1:M_.endo_nbr; diff --git a/matlab/model_inversion.m b/matlab/model_inversion.m index 4d01412f9..17e8267dd 100644 --- a/matlab/model_inversion.m +++ b/matlab/model_inversion.m @@ -15,7 +15,7 @@ function [endogenousvariables, exogenousvariables] = model_inversion(constraints % % REMARKS -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2018 Dynare Team % % This file is part of Dynare. % @@ -69,8 +69,8 @@ if exogenousvariables.vobs>constraints.vobs end % Get the list of endogenous and exogenous variables. -endo_names = cellstr(DynareModel.endo_names); -exo_names = cellstr(DynareModel.exo_names); +endo_names = DynareModel.endo_names; +exo_names = DynareModel.exo_names; % Use specidalized routine if the model is backward looking. if ~DynareModel.maximum_lead diff --git a/matlab/modules/reporting b/matlab/modules/reporting index dfa40f0b7..53d1e479c 160000 --- a/matlab/modules/reporting +++ b/matlab/modules/reporting @@ -1 +1 @@ -Subproject commit dfa40f0b7506cfdee02c69c33eeb26180a22e76f +Subproject commit 53d1e479c4e568ce1fda6b52efa202fa32fedefa diff --git a/matlab/ms-sbvar/plot_ms_forecast.m b/matlab/ms-sbvar/plot_ms_forecast.m index 61f986e90..865085622 100644 --- a/matlab/ms-sbvar/plot_ms_forecast.m +++ b/matlab/ms-sbvar/plot_ms_forecast.m @@ -15,7 +15,7 @@ function plot_ms_forecast(M_, options_, forecast, figure_name) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2011-2017 Dynare Team +% Copyright (C) 2011-2018 Dynare Team % % This file is part of Dynare. % @@ -36,18 +36,18 @@ nc = 2; nr = 2; nvars = M_.endo_nbr; endo_names = M_.endo_names; -var_list = endo_names(1:M_.orig_endo_nbr,:); +var_list = endo_names(1:M_.orig_endo_nbr); names = {}; tex_names = {}; m = 1; -for i = 1:size(var_list) - tmp = strmatch(var_list(i,:),endo_names,'exact'); +for i = 1:length(var_list) + tmp = strmatch(var_list{i}, endo_names, 'exact'); if isempty(tmp) - error([var_list(i,:) ' isn''t and endogenous variable']) + error([var_list{i} ' isn''t and endogenous variable']) end - tex_name = deblank(M_.endo_names_tex(i,:)); + tex_name = M_.endo_names_tex{i}; if ~isempty(tex_name) - names{m} = deblank(var_list(i,:)); + names{m} = var_list{i}; tex_names{m} = tex_name; m = m + 1; end @@ -98,7 +98,7 @@ for j=1:nvars m = 1; end subplot(nr,nc,m); - vn = deblank(endo_names(j,:)); + vn = endo_names{j}; plot(forecast(:,j)) title(vn,'Interpreter','none'); grid on; @@ -130,7 +130,7 @@ for j=1:nvars m = 1; end subplot(nr,nc,m); - vn = deblank(endo_names(j,:)); + vn = endo_names{j}; for k=1:num_percentiles if ceil(num_percentiles/2) == k plot(forecast(k,:,j),'LineWidth',1.5) diff --git a/matlab/ms-sbvar/plot_ms_irf.m b/matlab/ms-sbvar/plot_ms_irf.m index 3bff3773b..9b4373d32 100644 --- a/matlab/ms-sbvar/plot_ms_irf.m +++ b/matlab/ms-sbvar/plot_ms_irf.m @@ -15,7 +15,7 @@ function plot_ms_irf(M_, options_, irf, figure_name, varlist) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2011-2017 Dynare Team +% Copyright (C) 2011-2018 Dynare Team % % This file is part of Dynare. % @@ -40,29 +40,29 @@ nvars = M_.endo_nbr; endo_names = M_.endo_names; if isempty(varlist) - var_list = endo_names(1:M_.orig_endo_nbr,:); + var_list = endo_names(1:M_.orig_endo_nbr); end names = {}; tex_names = {}; m = 1; -for i = 1:size(var_list) - tmp = strmatch(var_list(i,:),endo_names,'exact'); +for i = 1:length(var_list) + tmp = strmatch(var_list{i}, endo_names, 'exact'); if isempty(tmp) - error([var_list(i,:) ' isn''t and endogenous variable']) + error([var_list{i} ' isn''t and endogenous variable']) end - tex_name = deblank(M_.endo_names_tex(tmp,:)); + tex_name = M_.endo_names_tex{tmp}; if ~isempty(tex_name) - names{m} = deblank(var_list(i,:)); + names{m} = var_list{i}; tex_names{m} = tex_name; m = m + 1; end end for i=1:M_.exo_nbr - tex_name = deblank(M_.exo_names_tex(i,:)); + tex_name = M_.exo_names_tex{i}; if ~isempty(tex_name) - names{m} = deblank(M_.exo_names(i,:)); + names{m} = M_.exo_names{i}; tex_names{m} = tex_name; m = m + 1; end @@ -81,7 +81,7 @@ else error('The impulse response matrix passed to be plotted does not appear to be the correct size'); end -if size(endo_names,1) ~= nvars +if length(endo_names) ~= nvars error('The names passed are not the same length as the number of variables'); end @@ -92,7 +92,7 @@ if num_percentiles == 1 for i=1:nvars shock(:,i) = irf(:,((i-1) + ((s-1)*nvars)+1)); end - plot_point_irf_for_shock(shock, nvars,endo_names, deblank(endo_names(s,:)), ... + plot_point_irf_for_shock(shock, nvars,endo_names, endo_names{s}, ... figure_name, [options_.ms.output_file_tag filesep 'Output' filesep 'IRF'], options_, names, tex_names); end else @@ -103,7 +103,7 @@ else shock(:,i,n) = irf(n,:,((i-1) + ((s-1)*nvars)+1)); end end - plot_banded_irf_for_shock(shock, nvars,endo_names, deblank(endo_names(s,:)), ... + plot_banded_irf_for_shock(shock, nvars,endo_names, endo_names{s}, ... figure_name, [options_.ms.output_file_tag filesep 'Output' filesep 'IRF'], options_, names, tex_names); end end @@ -114,8 +114,8 @@ fig = figure('Name',figure_name); for k=1:nvars subplot(ceil(sqrt(nvars)), ceil(sqrt(nvars)),k); plot(irf(:,k)) - disp([endo_names(k,:) ' shock from ' shock_name]); - title([endo_names(k,:) ' shock from ' shock_name]); + disp([endo_names{k} ' shock from ' shock_name]); + title([endo_names{k} ' shock from ' shock_name]); end dyn_save_graph(dirname,[figure_name ' ' shock_name],options_.graph_save_formats, ... options_.TeX,names,tex_names,[figure_name ' ' shock_name]); @@ -131,8 +131,8 @@ for k=1:nvars hold on end hold off - disp([endo_names(k,:) ' shock from ' shock_name]); - title([endo_names(k,:) ' shock from ' shock_name]); + disp([endo_names{k} ' shock from ' shock_name]); + title([endo_names{k} ' shock from ' shock_name]); end dyn_save_graph(dirname,[figure_name ' ' shock_name],options_.graph_save_formats, ... options_.TeX,names,tex_names,[figure_name ' ' shock_name]); diff --git a/matlab/ms-sbvar/plot_ms_variance_decomposition.m b/matlab/ms-sbvar/plot_ms_variance_decomposition.m index d6b39ce63..81ca0aa1f 100644 --- a/matlab/ms-sbvar/plot_ms_variance_decomposition.m +++ b/matlab/ms-sbvar/plot_ms_variance_decomposition.m @@ -22,7 +22,7 @@ function plot_ms_variance_decomposition(M_, options_, vd, figure_name, varargin) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2011-2017 Dynare Team +% Copyright (C) 2011-2018 Dynare Team % % This file is part of Dynare. % @@ -51,9 +51,9 @@ names = {}; tex_names = {}; m = 1; for i=1:M_.orig_endo_nbr - tex_name = deblank(M_.endo_names_tex(i,:)); + tex_name = M_.endo_names_tex{i}; if ~isempty(tex_name) - names{m} = deblank(endo_names(i,:)); + names{m} = endo_names{i}; tex_names{m} = tex_name; m = m + 1; end @@ -79,8 +79,8 @@ else end for i=1:nvars - shock_names{i} = endo_names(i,:); - series_names{i} = endo_names(i,:); + shock_names{i} = endo_names{i}; + series_names{i} = endo_names{i}; end x = [1:T]; diff --git a/matlab/ms-sbvar/plot_ms_variance_decomposition_error_bands.m b/matlab/ms-sbvar/plot_ms_variance_decomposition_error_bands.m index d88e757b5..f267fb505 100644 --- a/matlab/ms-sbvar/plot_ms_variance_decomposition_error_bands.m +++ b/matlab/ms-sbvar/plot_ms_variance_decomposition_error_bands.m @@ -15,7 +15,7 @@ function plot_ms_variance_decomposition_error_bands(M_, options_, vddata, figure % SPECIAL REQUIREMENTS % none -% Copyright (C) 2011-2017 Dynare Team +% Copyright (C) 2011-2018 Dynare Team % % This file is part of Dynare. % @@ -34,28 +34,28 @@ function plot_ms_variance_decomposition_error_bands(M_, options_, vddata, figure nvars = M_.endo_nbr; endo_names = M_.endo_names; -var_list = endo_names(1:M_.orig_endo_nbr,:); +var_list = endo_names(1:M_.orig_endo_nbr); names = {}; tex_names = {}; m = 1; -for i = 1:size(var_list) - tmp = strmatch(var_list(i,:), endo_names, 'exact'); +for i = 1:length(var_list) + tmp = strmatch(var_list{i}, endo_names, 'exact'); if isempty(tmp) - error([var_list(i,:) ' isn''t an endogenous variable']) + error([var_list{i} ' isn''t an endogenous variable']) end - tex_name = deblank(M_.endo_names_tex(tmp,:)); + tex_name = M_.endo_names_tex{tmp}; if ~isempty(tex_name) - names{m} = deblank(var_list(i,:)); + names{m} = var_list{i}; tex_names{m} = tex_name; m = m + 1; end end for i=1:M_.exo_nbr - tex_name = deblank(M_.exo_names_tex(i,:)); + tex_name = M_.exo_names_tex{i}; if ~isempty(tex_name) - names{m} = deblank(M_.exo_names(i,:)); + names{m} = M_.exo_names{i}; tex_names{m} = tex_name; m = m + 1; end @@ -67,7 +67,7 @@ if length(dims) ~= 3 end num_percentiles = dims(1); -if size(endo_names, 1) ~= nvars +if length(endo_names) ~= nvars error('The names passed are not the same length as the number of variables') end @@ -79,7 +79,7 @@ for s=1:nvars end end plot_banded_vddata_for_shock(shock, nvars, endo_names, ... - deblank(endo_names(s,:)), figure_name, ... + endo_names{s}, figure_name, ... [options_.ms.output_file_tag filesep 'Output' filesep 'Variance_Decomposition'], ... options_, names, tex_names); end @@ -96,8 +96,8 @@ for k=1:nvars hold on end hold off - disp([endo_names(k,:) ' contribution to ' shock_name]); - title([endo_names(k,:) ' contribution to ' shock_name]); + disp([endo_names{k} ' contribution to ' shock_name]); + title([endo_names{k} ' contribution to ' shock_name]); end dyn_save_graph(dirname, [figure_name ' ' shock_name], ... options_.graph_save_formats, options_.TeX, names, tex_names, ... diff --git a/matlab/mult_elimination.m b/matlab/mult_elimination.m index 91b441d35..98c17aa7c 100644 --- a/matlab/mult_elimination.m +++ b/matlab/mult_elimination.m @@ -12,7 +12,7 @@ function dr=mult_elimination(varlist,M_, options_, oo_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -34,7 +34,7 @@ dr = oo_.dr; nstatic = M_.nstatic; nspred = M_.nspred; order_var = dr.order_var; -nstates = M_.endo_names(order_var(nstatic+(1:nspred)),:); +nstates = M_.endo_names(order_var(nstatic+(1:nspred))); il = strmatch('MULT_',nstates); nil = setdiff(1:nspred,il); @@ -103,10 +103,10 @@ nvar = length(varlist); if nvar > 0 && options_.noprint == 0 res_table = zeros(2*(nm_nbr+M_.exo_nbr),nvar); - headers = 'Variables'; + headers = {'Variables'}; for i=1:length(varlist) - k = strmatch(varlist{i},M_.endo_names(dr.order_var,:),'exact'); - headers = char(headers,varlist{i}); + k = strmatch(varlist{i}, M_.endo_names(dr.order_var), 'exact'); + headers = vertcat(headers, varlist{i}); res_table(1:nm_nbr,i) = M1(k,:)'; res_table(nm_nbr+(1:nm_nbr),i) = M2(k,:)'; @@ -115,19 +115,12 @@ if nvar > 0 && options_.noprint == 0 end my_title='ELIMINATION OF THE MULTIPLIERS'; - lab = nstates(nil,:); - labels = strcat(deblank(lab(i,:)),'(-1)'); - for i = 2:size(lab,1) - labels = char(labels,strcat(deblank(lab(i,:)),'(-1)')); - end - for i = 1:size(lab,1) - labels = char(labels,strcat(deblank(lab(i,:)),'(-2)')); - end - labels = char(labels,M_.exo_names); - for i = 1:M_.exo_nbr - labels = char(labels,strcat(deblank(M_.exo_names(i,:)),'(-1)')); - end + lab = nstates(nil); + labels = cellfun(@(x) horzcat(x, '(-1)'), nstates(nil), 'UniformOutput', false); + labels = vertcat(labels, cellfun(@(x) horzcat(x, '(-2)'), nstates(nil), 'UniformOutput', false)); + labels = vertcat(labels, M_.exo_names); + labels = vertcat(labels, cellfun(@(x) horzcat(x, '(-1)'), M_.exo_names, 'UniformOutput', false)); lh = size(labels,2)+2; - dyntable(options_,my_title,headers,labels,res_table,lh,10,6); + dyntable(options_, my_title, headers, labels, res_table, lh, 10, 6); skipline() end diff --git a/matlab/name2index.m b/matlab/name2index.m index 22d116c79..7645c11a2 100644 --- a/matlab/name2index.m +++ b/matlab/name2index.m @@ -16,7 +16,7 @@ function i = name2index(options_, M_, estim_params_, type, name1, name2 ) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -44,7 +44,7 @@ i = []; if strcmpi(type,'DeepParameter') i = nvx + nvn + ncx + ncn + ... - strmatch(name1,M_.param_names(estim_params_.param_vals(:,1),:),'exact'); + strmatch(name1, M_.param_names(estim_params_.param_vals(:,1)), 'exact'); if nargin>5 disp('The last input argument is useless!') end @@ -56,7 +56,7 @@ end if strcmpi(type,'StructuralShock') if nargin<6% Covariance matrix diagonal term. - i = strmatch(name1,M_.exo_names(estim_params_.var_exo(:,1),:),'exact'); + i = strmatch(name1, M_.exo_names(estim_params_.var_exo(:,1)), 'exact'); if isempty(i) disp(['The standard deviation of ' name1 ' is not an estimated parameter!']) return @@ -64,14 +64,14 @@ if strcmpi(type,'StructuralShock') else% Covariance matrix off-diagonal term offset = nvx+nvn; try - list_of_structural_shocks = { M_.exo_names(estim_params_.corrx(:,1),:) , M_.exo_names(estim_params_.corrx(:,2),:) }; - k1 = strmatch(name1,list_of_structural_shocks(:,1),'exact'); - k2 = strmatch(name2,list_of_structural_shocks(:,2),'exact'); + list_of_structural_shocks = [ M_.exo_names(estim_params_.corrx(:,1)) , M_.exo_names(estim_params_.corrx(:,2)) ]; + k1 = strmatch(name1, list_of_structural_shocks(:,1), 'exact'); + k2 = strmatch(name2, list_of_structural_shocks(:,2), 'exact'); i = offset+intersect(k1,k2); if isempty(i) - k1 = strmatch(name1,list_of_structural_shocks(:,2),'exact'); - k2 = strmatch(name2,list_of_structural_shocks(:,1),'exact'); - i = offset+intersect(k1,k2); + k1 = strmatch(name1, list_of_structural_shocks(:,2), 'exact'); + k2 = strmatch(name2, list_of_structural_shocks(:,1), 'exact'); + i = offset+intersect(k1, k2); end if isempty(i) if isempty(i) @@ -87,7 +87,7 @@ end if strcmpi(type,'MeasurementError') if nargin<6% Covariance matrix diagonal term - i = nvx + strmatch(name1,M_.endo_names(estim_params_.var_endo(:,1),:),'exact'); + i = nvx + strmatch(name1, M_.endo_names{estim_params_.var_endo(:,1)}, 'exact'); if isempty(i) disp(['The standard deviation of the measurement error on ' name1 ' is not an estimated parameter!']) return @@ -95,7 +95,7 @@ if strcmpi(type,'MeasurementError') else% Covariance matrix off-diagonal term offset = nvx+nvn+ncx; try - list_of_measurement_errors = { M_.endo_names(estim_params_.corrn(:,1),:) , M_.endo_names(estim_params_.corrn(:,2),:) }; + list_of_measurement_errors = { M_.endo_names{estim_params_.corrn(:,1)} , M_.endo_names{estim_params_.corrn(:,2)} }; k1 = strmatch(name1,list_of_measurement_errors(:,1),'exact'); k2 = strmatch(name2,list_of_measurement_errors(:,2),'exact'); i = offset+intersect(k1,k2); diff --git a/matlab/occbin/call_solve_one_constraint.m b/matlab/occbin/call_solve_one_constraint.m index 65b98c431..f0caa00e2 100755 --- a/matlab/occbin/call_solve_one_constraint.m +++ b/matlab/occbin/call_solve_one_constraint.m @@ -8,14 +8,14 @@ % unpack the IRFs for i=1:Mbase_.endo_nbr - eval([deblank(Mbase_.endo_names(i,:)),'_uncdifference=zdatalinear(:,i);']); - eval([deblank(Mbase_.endo_names(i,:)),'_difference=zdatapiecewise(:,i);']); - eval([deblank(Mbase_.endo_names(i,:)),'_ss=zdatass(i);']); + eval([Mbase_.endo_names{i}, '_uncdifference=zdatalinear(:,i);']); + eval([Mbase_.endo_names{i}, '_difference=zdatapiecewise(:,i);']); + eval([Mbase_.endo_names{i}, '_ss=zdatass(i);']); end -nparams = size(Mbase_.param_names,1); +nparams = length(Mbase_.param_names); for i = 1:nparams - eval([Mbase_.param_names(i,:),'= Mbase_.params(i);']); + eval([Mbase_.param_names{i}, '= Mbase_.params(i);']); end diff --git a/matlab/occbin/call_solve_two_constraints.m b/matlab/occbin/call_solve_two_constraints.m index 5bbc1beb8..96a960989 100755 --- a/matlab/occbin/call_solve_two_constraints.m +++ b/matlab/occbin/call_solve_two_constraints.m @@ -6,16 +6,16 @@ for i=1:Mbase_.endo_nbr - eval([deblank(Mbase_.endo_names(i,:)),'_uncdifference=zdatalinear(:,i);']); - eval([deblank(Mbase_.endo_names(i,:)),'_difference=zdatapiecewise(:,i);']); - eval([deblank(Mbase_.endo_names(i,:)),'_ss=zdatass(i);']); + eval([Mbase_.endo_names{i}, '_uncdifference=zdatalinear(:,i);']); + eval([Mbase_.endo_names{i}, '_difference=zdatapiecewise(:,i);']); + eval([Mbase_.endo_names{i}, '_ss=zdatass(i);']); end -constraint1_difference = process_constraint(constraint1,'_difference',Mbase_.endo_names,0); -constraint2_difference = process_constraint(constraint2,'_difference',Mbase_.endo_names,0); +constraint1_difference = process_constraint(constraint1, '_difference', Mbase_.endo_names,0); +constraint2_difference = process_constraint(constraint2, '_difference', Mbase_.endo_names,0); -nparams = size(Mbase_.param_names,1); +nparams = length(Mbase_.param_names); for i = 1:nparams - eval([Mbase_.param_names(i,:),'= Mbase_.params(i);']); + eval([Mbase_.param_names{i}, '= Mbase_.params(i);']); end diff --git a/matlab/occbin/get_complementarity_conditions.m b/matlab/occbin/get_complementarity_conditions.m index cf5a40866..5f5564802 100644 --- a/matlab/occbin/get_complementarity_conditions.m +++ b/matlab/occbin/get_complementarity_conditions.m @@ -1,6 +1,6 @@ function [lb,ub,eq_index] = get_complementarity_conditions(M,ramsey_policy) -% Copyright (C) 2014 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -43,7 +43,7 @@ for i=1:size(etags,1) str = etags{i,3}; kop = strfind(etags{i,3},'<'); if ~isempty(kop) - k = find(strcmp(strtrim(str(1:kop-1)),cellstr(M.endo_names))); + k = find(strcmp(strtrim(str(1:kop-1)), M.endo_names)); if isempty(k) error(sprintf(['Complementarity condition %s: variable %s is ' ... 'not recognized',etags{i,3},b{1}])) @@ -54,7 +54,7 @@ for i=1:size(etags,1) else kop = strfind(etags{i,3},'>'); if ~isempty(kop) - k = find(strcmp(strtrim(str(1:kop-1)),cellstr(M.endo_names))); + k = find(strcmp(strtrim(str(1:kop-1)), M.endo_names)); if isempty(k) error(sprintf(['Complementarity condition %s: variable %s is ' ... 'not recognized',etags{i},b{1}])) diff --git a/matlab/occbin/get_occbin_complementarity_conditions.m b/matlab/occbin/get_occbin_complementarity_conditions.m index 29c865587..60aba2b26 100644 --- a/matlab/occbin/get_occbin_complementarity_conditions.m +++ b/matlab/occbin/get_occbin_complementarity_conditions.m @@ -1,6 +1,6 @@ function [ivar,ieq,lb,ub] = get_occbin_complementarity_conditions(M,ramsey_policy) -% Copyright (C) 2015 Dynare Team +% Copyright (C) 2015-2018 Dynare Team % % This file is part of Dynare. % @@ -45,7 +45,7 @@ for i=1:size(etags,1) str = etags{i,3}; kop = strfind(etags{i,3},'<'); if ~isempty(kop) - k = find(strcmp(strtrim(str(1:kop-1)),cellstr(M.endo_names))); + k = find(strcmp(strtrim(str(1:kop-1)), M.endo_names)); if isempty(k) error(sprintf(['Complementarity condition %s: variable %s is ' ... 'not recognized',etags{i,3},b{1}])) @@ -56,7 +56,7 @@ for i=1:size(etags,1) else kop = strfind(etags{i,3},'>'); if ~isempty(kop) - k = find(strcmp(strtrim(str(1:kop-1)),cellstr(M.endo_names))); + k = find(strcmp(strtrim(str(1:kop-1)), M.endo_names)); if isempty(k) error(sprintf(['Complementarity condition %s: variable %s is ' ... 'not recognized',etags{i},b{1}])) diff --git a/matlab/occbin/mkdata.m b/matlab/occbin/mkdata.m index f22fb45f6..f887f021c 100755 --- a/matlab/occbin/mkdata.m +++ b/matlab/occbin/mkdata.m @@ -3,7 +3,7 @@ function [zdata]=mkdata(nperiods,decrulea,decruleb,endog_,exog_,wishlist,irfshoc %[nsim, ksim, ysim, isim, csim] = mkdata(nperiods,cofb,endog_) % given decision rule -neqs = size(endog_,1); +neqs = length(endog_); if nargin<9 init = zeros(neqs,1); @@ -21,7 +21,7 @@ history = zeros(neqs,nperiods+1); nshocks = size(irfshock,1); for i = 1:nshocks - shockpos = strmatch(irfshock(i,:),exog_,'exact'); + shockpos = strmatch(irfshock(i,:), exog_,'exact'); if ~isempty(shockpos) irfshockpos(i) = shockpos; else @@ -38,7 +38,7 @@ history(:,1)= init; lengthshock = size(scalefactormod,1); -errvec = zeros(size(exog_,1),1); +errvec = zeros(length(exog_), 1); for i = 2:nperiods+1 if i<=(lengthshock+1) @@ -58,6 +58,6 @@ wishpos = zeros(nwish,1); history=history'; for i=1:nwish - wishpos(i) = strmatch(wishlist(i,:),endog_,'exact'); + wishpos(i) = strmatch(wishlist(i,:), endog_, 'exact'); end zdata = history(2:end,wishpos); \ No newline at end of file diff --git a/matlab/occbin/mkdatap_anticipated.m b/matlab/occbin/mkdatap_anticipated.m index a9c924966..e26781c92 100755 --- a/matlab/occbin/mkdatap_anticipated.m +++ b/matlab/occbin/mkdatap_anticipated.m @@ -5,8 +5,7 @@ function [zdata]=mkdatap_anticipated(nperiods,decrulea,decruleb,... -nvars = size(endog_,1); - +nvars = length(endog_); if nargin<16 init=zeros(nvars,1); @@ -19,11 +18,11 @@ end nshocks = size(irfshock,1); for i = 1:nshocks - shockpos = strmatch(irfshock(i,:),exog_,'exact'); + shockpos = strmatch(irfshock(i,:), exog_, 'exact'); if ~isempty(shockpos) irfshockpos(i) = shockpos; else - error(['Shock ',irfshock(i,:),' is not in the model']); + error(['Shock ', irfshock(i,:), ' is not in the model']); end end @@ -94,7 +93,7 @@ end % be stored columnwise. history = zeros(nvars,nperiods+1); history(:,1) = init; -errvec = zeros(size(exog_,1),1); +errvec = zeros(length(exog_), 1); % deal with predetermined conditions for i = 1:nshocks diff --git a/matlab/occbin/setss.m b/matlab/occbin/setss.m index 7fc52f6c0..fe87642ea 100755 --- a/matlab/occbin/setss.m +++ b/matlab/occbin/setss.m @@ -1,13 +1,13 @@ % Script that retrieves parameter values once model is solved -nendog = size(Mbase_.endo_names,1); +nendog = length(Mbase_.endo_names); for i=1:nendog - eval([deblank(Mbase_.endo_names(i,:)) '_ss = oo_.dr.ys(i); ']); + eval([Mbase_.endo_names{i} '_ss = oo_.dr.ys(i); ']); end -nparams = size(Mbase_.param_names); +nparams = length(Mbase_.param_names); for i = 1:nparams - eval([Mbase_.param_names(i,:),'= M_.params(i);']); + eval([Mbase_.param_names{i},'= M_.params(i);']); end diff --git a/matlab/occbin/solve_no_constraint.m b/matlab/occbin/solve_no_constraint.m index 27af64f1c..db3d45745 100755 --- a/matlab/occbin/solve_no_constraint.m +++ b/matlab/occbin/solve_no_constraint.m @@ -16,11 +16,11 @@ nvars = numel(ys_); zdatass_ = ys_ ; for i=1:Mbase_.endo_nbr - eval([deblank(Mbase_.endo_names(i,:)) '_ss = oo_.dr.ys(i); ']); + eval([Mbase_.endo_names{i} '_ss = oo_.dr.ys(i); ']); end -for i = 1:size(Mbase_.param_names) - eval([Mbase_.param_names(i,:),'= M_.params(i);']); +for i = 1:length(Mbase_.param_names) + eval([Mbase_.param_names{i}, '= M_.params(i);']); end @@ -43,7 +43,7 @@ nshocks = size(shockssequence,1); init = zeros(nvars,1); wishlist = endog_; -nwishes = size(wishlist,1); +nwishes = length(wishlist); zdata_ = mkdata(nperiods,decrulea,decruleb,endog_,exog_,wishlist,irfshock,shockssequence); diff --git a/matlab/occbin/solve_no_constraint_noclear.m b/matlab/occbin/solve_no_constraint_noclear.m index 8012f9126..b290786af 100755 --- a/matlab/occbin/solve_no_constraint_noclear.m +++ b/matlab/occbin/solve_no_constraint_noclear.m @@ -14,11 +14,11 @@ Mbase_ = M_; ys_ = oobase_.dr.ys; for i=1:Mbase_.endo_nbr - eval([deblank(Mbase_.endo_names(i,:)) '_ss = oo_.dr.ys(i); ']); + eval([Mbase_.endo_names{i} '_ss = oo_.dr.ys(i); ']); end -for i = 1:size(Mbase_.param_names) - eval([Mbase_.param_names(i,:),'= M_.params(i);']); +for i = 1:length(Mbase_.param_names) + eval([Mbase_.param_names{i}, '= M_.params(i);']); end setss @@ -41,7 +41,7 @@ nshocks = size(shockssequence,1); init = zeros(nvars,1); wishlist = endog_; -nwishes = size(wishlist,1); +nwishes = length(wishlist); zdata = mkdata(nperiods,decrulea,decruleb,endog_,exog_,wishlist,irfshock,shockssequence); diff --git a/matlab/occbin/solve_one_constraint.1.m b/matlab/occbin/solve_one_constraint.1.m index aa155c234..64a13c9ed 100755 --- a/matlab/occbin/solve_one_constraint.1.m +++ b/matlab/occbin/solve_one_constraint.1.m @@ -41,12 +41,12 @@ Mbase_ = M_; % import locally the values of parameters assigned in the reference .mod % file for i_indx_ = 1:Mbase_.param_nbr - eval([Mbase_.param_names(i_indx_,:),'= M_.params(i_indx_);']); + eval([Mbase_.param_names{i_indx_},'= M_.params(i_indx_);']); end % Create steady state values of the variables if needed for processing the constraint for i=1:Mbase_.endo_nbr - eval([deblank(Mbase_.endo_names(i,:)) '_ss = oobase_.dr.ys(i); ']); + eval([Mbase_.endo_names{i} '_ss = oobase_.dr.ys(i); ']); end @@ -120,7 +120,7 @@ end init_orig_ = init_; zdatapiecewise_ = zeros(nperiods_,nvars_); wishlist_ = endog_; -nwishes_ = size(wishlist_,1); +nwishes_ = length(wishlist_); violvecbool_ = zeros(nperiods_+1,1); @@ -144,7 +144,7 @@ for ishock_ = 1:nshocks_ endog_,exog_,irfshock_,shockssequence_(ishock_,:),init_); for i_indx_=1:nwishes_ - eval([deblank(wishlist_(i_indx_,:)),'_difference=zdatalinear_(:,i_indx_);']); + eval([deblank(wishlist_{i_indx_}), '_difference=zdatalinear_(:,i_indx_);']); end diff --git a/matlab/occbin/solve_one_constraint.m b/matlab/occbin/solve_one_constraint.m index 5959636bf..5606832a9 100755 --- a/matlab/occbin/solve_one_constraint.m +++ b/matlab/occbin/solve_one_constraint.m @@ -41,12 +41,12 @@ Mbase_ = M_; % import locally the values of parameters assigned in the reference .mod % file for i_indx_ = 1:Mbase_.param_nbr - eval([Mbase_.param_names(i_indx_,:),'= M_.params(i_indx_);']); + eval([Mbase_.param_names{i_indx_},'= M_.params(i_indx_);']); end % Create steady state values of the variables if needed for processing the constraint for i=1:Mbase_.endo_nbr - eval([deblank(Mbase_.endo_names(i,:)) '_ss = oobase_.dr.ys(i); ']); + eval([Mbase_.endo_names{i} '_ss = oobase_.dr.ys(i); ']); end @@ -126,7 +126,7 @@ end init_orig_ = init_; zdatapiecewise_ = zeros(nperiods_,nvars_); wishlist_ = endog_; -nwishes_ = size(wishlist_,1); +nwishes_ = length(wishlist_); violvecbool_ = zeros(nperiods_+1,1); @@ -151,7 +151,7 @@ for ishock_ = 1:nshocks_ endog_,exog_,irfshock_,shockssequence_(ishock_,:),init_); for i_indx_=1:nwishes_ - eval([deblank(wishlist_(i_indx_,:)),'_difference=zdatalinear_(:,i_indx_);']); + eval([wishlist_{i_indx_},'_difference=zdatalinear_(:,i_indx_);']); end diff --git a/matlab/occbin/solve_two_constraints.m b/matlab/occbin/solve_two_constraints.m index 1b436ad00..33fea1c72 100755 --- a/matlab/occbin/solve_two_constraints.m +++ b/matlab/occbin/solve_two_constraints.m @@ -46,11 +46,11 @@ M00_ = M_; for i=1:M00_.endo_nbr - eval([deblank(M00_.endo_names(i,:)) '_ss = oo00_.dr.ys(i); ']); + eval([M00_.endo_names{i} '_ss = oo00_.dr.ys(i); ']); end for i_indx_ = 1:M00_.param_nbr - eval([M00_.param_names(i_indx_,:),'= M00_.params(i_indx_);']); + eval([M00_.param_names{i_indx_},'= M00_.params(i_indx_);']); end @@ -208,7 +208,7 @@ violvecbool_ = zeros(nperiods_+1,2); % This sets the first guess for when % solution. wishlist_ = endog_; -nwishes_ = size(wishlist_,1); +nwishes_ = length(wishlist_); for ishock_ = 1:nshocks @@ -235,7 +235,7 @@ for ishock_ = 1:nshocks irfshock_,shockssequence_(ishock_,:),init_); for i_indx_=1:nwishes_ - eval([deblank(wishlist_(i_indx_,:)),'_difference=zdatalinear_(:,i_indx_);']); + eval([wishlist_{i_indx_}, '_difference=zdatalinear_(:,i_indx_);']); end diff --git a/matlab/osr.m b/matlab/osr.m index 60039ac45..d6d9786c5 100644 --- a/matlab/osr.m +++ b/matlab/osr.m @@ -1,4 +1,4 @@ -function osr_res = osr(var_list,params,i_var,W) +function osr_res = osr(var_list, params, i_var,W) % osr_res = osr(var_list,params,i_var,W) % Wrapper function computing the solution to the optimal simple % rule-problem; calls osr1 for actual computation @@ -20,8 +20,8 @@ function osr_res = osr(var_list,params,i_var,W) % % SPECIAL REQUIREMENTS % none. -% -% Copyright (C) 2001-2017 Dynare Team + +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % diff --git a/matlab/osr1.m b/matlab/osr1.m index 2f9c65ec9..1f7037e12 100644 --- a/matlab/osr1.m +++ b/matlab/osr1.m @@ -16,7 +16,7 @@ function osr_res = osr1(i_params,i_var,weights) % Uses Newton-type optimizer csminwel to directly solve quadratic % osr-problem % -% Copyright (C) 2005-2017 Dynare Team +% Copyright (C) 2005-2018 Dynare Team % % This file is part of Dynare. % @@ -129,14 +129,14 @@ else error('OSR: OSR with bounds on parameters requires a constrained optimizer, i.e. opt_algo= 1,2,5, or 9.') end %%do actual optimization - [p, f, exitflag] = dynare_minimize_objective(str2func('osr_obj'),t0,options_.osr.opt_algo,options_,M_.osr.param_bounds,cellstr(M_.param_names(i_params,:)),[],[], i_params,... + [p, f, exitflag] = dynare_minimize_objective(str2func('osr_obj'),t0,options_.osr.opt_algo,options_,M_.osr.param_bounds,M_.param_names(i_params),[],[], i_params,... inv_order_var(i_var),weights(i_var,i_var)); end osr_res.objective_function = f; M_.params(i_params)=p; %make sure optimal parameters are set (and not the last draw used in csminwel) for i=1:length(i_params) - osr_res.optim_params.(deblank(M_.param_names(i_params(i),:))) = p(i); + osr_res.optim_params.(M_.param_names{i_params(i)}) = p(i); end if ~options_.noprint @@ -144,7 +144,7 @@ if ~options_.noprint disp('OPTIMAL VALUE OF THE PARAMETERS:') skipline() for i=1:np - disp(sprintf('%16s %16.6g\n',M_.param_names(i_params(i),:),p(i))) + disp(sprintf('%16s %16.6g\n', M_.param_names{i_params(i)}, p(i))) end disp(sprintf('Objective function : %16.6g\n',f)); skipline() diff --git a/matlab/partial_information/PCL_Part_info_irf.m b/matlab/partial_information/PCL_Part_info_irf.m index 0c3c17c2b..e4a5bc465 100644 --- a/matlab/partial_information/PCL_Part_info_irf.m +++ b/matlab/partial_information/PCL_Part_info_irf.m @@ -5,7 +5,7 @@ function y=PCL_Part_info_irf( H, varobs, ivar, M_, dr, irfpers,ii) % Pearlman, Currie and Levine 1986 solution. % 22/10/06 - Version 2 for new Riccati with 4 params instead 5 -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -31,7 +31,7 @@ function y=PCL_Part_info_irf( H, varobs, ivar, M_, dr, irfpers,ii) OBS = []; for i=1:rows(varobs) - OBS = [OBS find(strcmp(deblank(varobs(i,:)), cellstr(M_.endo_names))) ]; + OBS = [OBS find(strcmp(varobs{i}, M_.endo_names)) ]; end NOBS = length(OBS); @@ -116,7 +116,7 @@ rr=DD*QQ*DD'+RR; ZSIG0=disc_riccati_fast(ff,DD,rr,hh); PP=ZSIG0 +QQ; -exo_names=M_.exo_names(M_.exo_names_orig_ord,:); +exo_names=M_.exo_names(M_.exo_names_orig_ord); DPDR=DD*PP*DD'+RR; I_DPDR=inv(DPDR); @@ -138,4 +138,4 @@ for jj=2:irfpers+1 end y = irfmat(:,1:irfpers); -save ([M_.fname '_PCL_PtInfoIRFs_' num2str(ii) '_' deblank(exo_names(ii,:))], 'irfmat','irfst'); +save ([M_.fname '_PCL_PtInfoIRFs_' num2str(ii) '_' exo_names{ii}], 'irfmat','irfst'); diff --git a/matlab/partial_information/PCL_Part_info_moments.m b/matlab/partial_information/PCL_Part_info_moments.m index bb16b6604..d5a3c6315 100644 --- a/matlab/partial_information/PCL_Part_info_moments.m +++ b/matlab/partial_information/PCL_Part_info_moments.m @@ -5,7 +5,7 @@ function AutoCOR_YRk=PCL_Part_info_moments( H, varobs, dr,ivar) % Pearlman, Currie and Levine 1986 solution. % 22/10/06 - Version 2 for new Riccati with 4 params instead 5 -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -33,7 +33,7 @@ warning off OBS = []; for i=1:rows(varobs) - OBS = [OBS find(strcmp(deblank(varobs(i,:)), cellstr(M_.endo_names))) ]; + OBS = [OBS find(strcmp(varobs{i}, M_.endo_names)) ]; end NOBS = length(OBS); @@ -129,7 +129,7 @@ rr=DD*QQ*DD'+RR; ZSIG0=disc_riccati_fast(ff,DD,rr,hh); PP=ZSIG0 +QQ; -exo_names=M_.exo_names(M_.exo_names_orig_ord,:); +exo_names = M_.exo_names(M_.exo_names_orig_ord); DPDR=DD*PP*DD'+RR; I_DPDR=inv(DPDR); @@ -147,42 +147,42 @@ nn=size(VV,1); COV_OMEGA= COV_P( end-nn+1:end, end-nn+1:end); COV_YR0= VV*COV_OMEGA*VV'; diagCovYR0=diag(COV_YR0); -labels = deblank(M_.endo_names(ivar,:)); +labels = M_.endo_names(ivar); -if options_.nomoments == 0 +if ~options_.nomoments z = [ sqrt(diagCovYR0(ivar)) diagCovYR0(ivar) ]; - title='THEORETICAL MOMENTS'; - headers=char('VARIABLE','STD. DEV.','VARIANCE'); - dyntable(options_,title,headers,labels,z,size(labels,2)+2,16,10); + title = 'THEORETICAL MOMENTS'; + headers = {'VARIABLE'; 'STD. DEV.'; 'VARIANCE'}; + dyntable(options_, title, headers, labels, z, cellofchararraymaxlength(labels)+2, 16, 10); end -if options_.nocorr == 0 - diagSqrtCovYR0=sqrt(diagCovYR0); - DELTA=inv(diag(diagSqrtCovYR0)); - COR_Y= DELTA*COV_YR0*DELTA; +if ~options_.nocorr + diagSqrtCovYR0 = sqrt(diagCovYR0); + DELTA = inv(diag(diagSqrtCovYR0)); + COR_Y = DELTA*COV_YR0*DELTA; title = 'MATRIX OF CORRELATION'; - headers = char('VARIABLE',M_.endo_names(ivar,:)); - dyntable(options_,title,headers,labels,COR_Y(ivar,ivar),size(labels,2)+2,8,4); + headers = vertcat('VARIABLE', M_.endo_names(ivar)); + dyntable(options_, title, headers, labels, COR_Y(ivar,ivar), size(labels,2)+2, 8, 4); else COR_Y=[]; end ar = options_.ar; if ar > 0 - COV_YRk= zeros(nn,ar); - AutoCOR_YRk= zeros(nn,ar); - for k=1:ar - COV_P=GAM*COV_P; - COV_OMEGA= COV_P( end-nn+1:end, end-nn+1:end); + COV_YRk = zeros(nn, ar); + AutoCOR_YRk= zeros(nn, ar); + for k = 1:ar + COV_P = GAM*COV_P; + COV_OMEGA = COV_P( end-nn+1:end, end-nn+1:end); COV_YRk = VV*COV_OMEGA*VV'; - AutoCOR_YRkMAT=DELTA*COV_YRk*DELTA; - oo_.autocorr{k}=AutoCOR_YRkMAT(ivar,ivar); - AutoCOR_YRk(:,k)= diag(COV_YRk)./diagCovYR0; + AutoCOR_YRkMAT = DELTA*COV_YRk*DELTA; + oo_.autocorr{k} = AutoCOR_YRkMAT(ivar,ivar); + AutoCOR_YRk(:,k) = diag(COV_YRk)./diagCovYR0; end title = 'COEFFICIENTS OF AUTOCORRELATION'; - headers = char('VARIABLE',int2str([1:ar]')); - dyntable(options_,title,headers,labels,AutoCOR_YRk(ivar,:),size(labels,2)+2,8,4); + headers = vertcat('VARIABLE', cellstr(int2str([1:ar]'))); + dyntable(options_, title, headers, labels, AutoCOR_YRk(ivar,:), size(labels,2)+2, 8, 4); else - AutoCOR_YRk=[]; + AutoCOR_YRk = []; end save ([M_.fname '_PCL_moments'], 'COV_YR0','AutoCOR_YRk', 'COR_Y'); warning(warning_old_state); diff --git a/matlab/partial_information/dr1_PI.m b/matlab/partial_information/dr1_PI.m index 04fe8d926..a7f82d3c0 100644 --- a/matlab/partial_information/dr1_PI.m +++ b/matlab/partial_information/dr1_PI.m @@ -40,7 +40,7 @@ function [dr,info,M_,options_,oo_] = dr1_PI(dr,task,M_,options_,oo_) % none. % -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -192,7 +192,7 @@ end % end if useAIM and... num_inst=size(lq_instruments.names,1); if ~isfield(lq_instruments,'inst_var_indices') && num_inst>0 for i=1:num_inst - i_tmp = strmatch(deblank(lq_instruments.names(i,:)),M_.endo_names,'exact'); + i_tmp = strmatch(deblank(lq_instruments.names(i,:)), M_.endo_names,'exact'); if isempty(i_tmp) error (['One of the specified instrument variables does not exist']) ; else @@ -406,7 +406,7 @@ end % end if useAIM and... %save ([M_.fname '_ACESLQ_NI.txt'], 'num_inst', '-ascii', '-tabs'); %save ([M_.fname '_ACESLQ_ND.txt'], 'NX', '-ascii', '-tabs'); %save ([M_.fname '_ACESLQ_NY.txt'], 'NY', '-ascii', '-tabs'); - ACES_VARS=M_.endo_names; + ACES_VARS=char(M_.endo_names); save ([ACES_DirectoryName,'/',M_.fname '_ACESLQ_VARS.txt'], 'ACES_VARS', '-ascii', '-tabs'); % added by BY % save the char array ACES_VARS into .txt as it is diff --git a/matlab/perfect-foresight-models/det_cond_forecast.m b/matlab/perfect-foresight-models/det_cond_forecast.m index ee177d830..a7945cbea 100644 --- a/matlab/perfect-foresight-models/det_cond_forecast.m +++ b/matlab/perfect-foresight-models/det_cond_forecast.m @@ -11,8 +11,8 @@ function data_set = det_cond_forecast(varargin) % OUTPUTS % dataset [dseries] Returns a dseries containing the forecasted endgenous variables and shocks % -% -% Copyright (C) 2013-2017 Dynare Team + +% Copyright (C) 2013-2018 Dynare Team % % This file is part of Dynare. % @@ -70,10 +70,7 @@ if length(varargin) > 3 controlled_varexo = options_cond_fcst.controlled_varexo; nvarexo = size(controlled_varexo, 1); options_cond_fcst.controlled_varexo = zeros(nvarexo,1); - exo_names = cell(M_.exo_nbr,1); - for i = 1:M_.exo_nbr - exo_names{i} = deblank(M_.exo_names(i,:)); - end + exo_names = M_.exo_names; for i = 1:nvarexo j = find(strcmp(controlled_varexo(i,:), exo_names)); if ~isempty(j) @@ -132,12 +129,12 @@ else end for i = 1:length(M_.aux_vars) if M_.aux_vars(i).type == 1 %lag variable - iy = find(strcmp(deblank(M_.endo_names(M_.aux_vars(i).orig_index,:)), sym_dset.name)); + iy = find(strcmp(M_.endo_names{M_.aux_vars(i).orig_index}, sym_dset.name)); if ~isempty(iy) oo_.endo_simul(M_.aux_vars(i).endo_index, 1:sym_dset.nobs) = dset(dates(range(1) + (M_.aux_vars(i).orig_lead_lag - 1))).data(:,iy); initial_conditions(M_.aux_vars(i).endo_index) = dset(dates(range(1) + (M_.aux_vars(i).orig_lead_lag - 1))).data(:,iy); else - warning(['The variable auxiliary ' M_.endo_names(M_.aux_vars(i).endo_index, :) ' associated to the variable ' M_.endo_names(M_.aux_vars(i).orig_index,:) ' do not appear in the dataset']); + warning(['The variable auxiliary ' M_.endo_names{M_.aux_vars(i).endo_index} ' associated to the variable ' M_.endo_names{M_.aux_vars(i).orig_index} ' do not appear in the dataset']); end else oo_.endo_simul(M_.aux_vars(i).endo_index, 1:sym_dset.nobs) = repmat(oo_.steady_state(M_.aux_vars(i).endo_index), 1, range.ndat + 1); @@ -185,11 +182,11 @@ else end data_set = [dset(dset.dates(1):(plan.date(1)-1)) ; data_set]; for i=1:M_.exo_nbr - pos = find(strcmp(strtrim(M_.exo_names(i,:)),dset.name)); + pos = find(strcmp(M_.exo_names{i}, dset.name)); if isempty(pos) - data_set{strtrim(M_.exo_names(i,:))} = dseries(exo(1+M_.maximum_lag:end,i), plan.date(1), strtrim(M_.exo_names(i,:))); + data_set{M_.exo_names{i}} = dseries(exo(1+M_.maximum_lag:end,i), plan.date(1), M_.exo_names{i}); else - data_set{strtrim(M_.exo_names(i,:))}(plan.date(1):plan.date(1)+ (size(exo, 1) - M_.maximum_lag)) = exo(1+M_.maximum_lag:end,i); + data_set{M_.exo_names{i}}(plan.date(1):plan.date(1)+ (size(exo, 1) - M_.maximum_lag)) = exo(1+M_.maximum_lag:end,i); end end data_set = merge(dset(dset.dates(1):(plan.date(1)-1)), data_set); @@ -359,7 +356,7 @@ else controlled_varexo = zeros(1,n_control_exo); for i = 1:nx for j=1:n_control_exo - if strcmp(deblank(exo_names(i,:)), deblank(options_cond_fcst.controlled_varexo(j,:))) + if strcmp(exo_names{i}, deblank(options_cond_fcst.controlled_varexo(j,:))) controlled_varexo(j) = i; end end diff --git a/matlab/perfect-foresight-models/perfect_foresight_setup.m b/matlab/perfect-foresight-models/perfect_foresight_setup.m index 97e2ee199..44a3694c1 100644 --- a/matlab/perfect-foresight-models/perfect_foresight_setup.m +++ b/matlab/perfect-foresight-models/perfect_foresight_setup.m @@ -12,7 +12,7 @@ function perfect_foresight_setup() % SPECIAL REQUIREMENTS % none -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -35,12 +35,12 @@ test_for_deep_parameters_calibration(M_); if size(M_.lead_lag_incidence,2)-nnz(M_.lead_lag_incidence(M_.maximum_endo_lag+1,:)) > 0 mess = ['PERFECT_FORESIGHT_SETUP: error in model specification : the variable(s) ']; - var_list=M_.endo_names(find(M_.lead_lag_incidence(M_.maximum_lag+1,:)==0),:); - for i=1:size(var_list,1) - if ioptions_.periods); - mess = sprintf('%s\n At least one expected value for %s has been declared after the terminal period.', mess, deblank(M_.exo_names(M_.det_shocks(i).exo_id,:))); + mess = sprintf('%s\n At least one expected value for %s has been declared after the terminal period.', mess, M_.exo_names{M_.det_shocks(i).exo_id}); end end disp(mess) diff --git a/matlab/perfect-foresight-models/perfect_foresight_solver.m b/matlab/perfect-foresight-models/perfect_foresight_solver.m index 8e7c3bcbc..64e77a8fc 100644 --- a/matlab/perfect-foresight-models/perfect_foresight_solver.m +++ b/matlab/perfect-foresight-models/perfect_foresight_solver.m @@ -12,7 +12,7 @@ function perfect_foresight_solver() % SPECIAL REQUIREMENTS % none -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -213,5 +213,5 @@ else initial_period = options_.initial_period; end -ts = dseries(transpose(oo_.endo_simul),initial_period,cellstr(M_.endo_names)); +ts = dseries(transpose(oo_.endo_simul), initial_period, M_.endo_names); assignin('base', 'Simulated_time_series', ts); \ No newline at end of file diff --git a/matlab/perfect-foresight-models/sim1.m b/matlab/perfect-foresight-models/sim1.m index b8d09a808..9d61d8819 100644 --- a/matlab/perfect-foresight-models/sim1.m +++ b/matlab/perfect-foresight-models/sim1.m @@ -17,7 +17,7 @@ function [endogenousvariables, info] = sim1(endogenousvariables, exogenousvariab % SPECIAL REQUIREMENTS % None. -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -312,22 +312,22 @@ function display_critical_variables(dyy, M) if any(isnan(dyy)) indx = find(any(isnan(dyy))); - endo_names=cellstr(M.endo_names(indx,:)); + endo_names= M.endo_names(indx); disp('Last iteration provided NaN for the following variables:') - fprintf('%s, ',endo_names{:}), + fprintf('%s, ', endo_names{:}), fprintf('\n'), end if any(isinf(dyy)) indx = find(any(isinf(dyy))); - endo_names=cellstr(M.endo_names(indx,:)); + endo_names = M.endo_names(indx); disp('Last iteration diverged (Inf) for the following variables:') - fprintf('%s, ',endo_names{:}), + fprintf('%s, ', endo_names{:}), fprintf('\n'), end if any(~isreal(dyy)) indx = find(any(~isreal(dyy))); - endo_names=cellstr(M.endo_names(indx,:)); + endo_names = M.endo_names(indx); disp('Last iteration provided complex number for the following variables:') - fprintf('%s, ',endo_names{:}), + fprintf('%s, ', endo_names{:}), fprintf('\n'), end diff --git a/matlab/plot_icforecast.m b/matlab/plot_icforecast.m index c4e3c2b2b..f6eb63e3e 100644 --- a/matlab/plot_icforecast.m +++ b/matlab/plot_icforecast.m @@ -2,7 +2,7 @@ function plot_icforecast(Variables,periods,options_) % Build plots for the conditional forecasts. % % INPUTS -% o Variables [char] m*x array holding the names of the endogenous variables to be plotted. +% o Variables [cell] names of the endogenous variables to be plotted. % % OUTPUTS % None. @@ -10,7 +10,7 @@ function plot_icforecast(Variables,periods,options_) % SPECIAL REQUIREMENTS % This routine has to be called after imcforecast.m. -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -34,7 +34,7 @@ end load conditional_forecasts; -eval(['forecast_periods = length(forecasts.cond.Mean.' Variables(1,:) ');']); +forecast_periods = length(forecasts.cond.Mean.(Variables{1})); if nargin==1 || isempty(periods) % Set default number of periods. periods=forecast_periods; else @@ -48,12 +48,12 @@ end forecasts.graph.OutputDirectoryName = CheckPath('graphs',forecasts.graph.fname); -for i=1:size(Variables,1) - eval(['ci1 = forecasts.cond.ci.' Variables(i,:) ';']) - eval(['m1 = forecasts.cond.Mean.' Variables(i,:) ';']) - eval(['ci2 = forecasts.uncond.ci.' Variables(i,:) ';']) - eval(['m2 = forecasts.uncond.Mean.' Variables(i,:) ';']) - build_figure(Variables(i,:),ci1(:,1:periods),ci2(:,1:periods),m1(1:periods),m2(1:periods),options_,forecasts.graph); +for i=1:length(Variables) + ci1 = forecasts.cond.ci.(Variables{i}); + m1 = forecasts.cond.Mean.(Variables{i}); + ci2 = forecasts.uncond.ci.(Variables{i}); + m2 = forecasts.uncond.Mean.(Variables{i}); + build_figure(Variables{i},ci1(:,1:periods),ci2(:,1:periods),m1(1:periods),m2(1:periods),options_,forecasts.graph); end function build_figure(name,cci1,cci2,mm1,mm2,options_,graphoptions) @@ -68,4 +68,4 @@ plot(1:H,cci2(1,:),'--k','linewidth',1) plot(1:H,cci2(2,:),'--k','linewidth',1) axis tight hold off -dyn_saveas(hh,[graphoptions.OutputDirectoryName '/Conditional_forecast_',strrep(deblank(graphoptions.title),' ','_'),'_',deblank(name)],options_.nodisplay,options_.graph_format) \ No newline at end of file +dyn_saveas(hh,[graphoptions.OutputDirectoryName '/Conditional_forecast_',strrep(deblank(graphoptions.title),' ','_'),'_',name],options_.nodisplay,options_.graph_format) \ No newline at end of file diff --git a/matlab/plot_shock_decomposition.m b/matlab/plot_shock_decomposition.m index 377ab68d3..ac151e47d 100644 --- a/matlab/plot_shock_decomposition.m +++ b/matlab/plot_shock_decomposition.m @@ -11,7 +11,7 @@ function [z, steady_state] = plot_shock_decomposition(M_,oo_,options_,varlist) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2016-2017 Dynare Team +% Copyright (C) 2016-2018 Dynare Team % % This file is part of Dynare. % @@ -32,12 +32,12 @@ options_.nodisplay = options_.plot_shock_decomp.nodisplay; options_.graph_format = options_.plot_shock_decomp.graph_format; % indices of endogenous variables -if size(varlist,1) == 0 - varlist = M_.endo_names(1:M_.orig_endo_nbr,:); +if isempty(varlist) + varlist = M_.endo_names(1:M_.orig_endo_nbr); end -[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names); -varlist=varlist(index_uniques,:); +[i_var, nvar, index_uniques] = varlist_indices(varlist, M_.endo_names); +varlist = varlist(index_uniques); % number of variables endo_nbr = M_.endo_nbr; @@ -194,7 +194,7 @@ if options_.plot_shock_decomp.use_shock_groups kcum=[]; for i=1:ngroups for j = shock_groups.(shock_ind{i}).shocks - k = find(strcmp(j,cellstr(M_.exo_names))); + k = find(strcmp(j, M_.exo_names)); zz(:,i,:) = zz(:,i,:) + z(:,k,:); z(:,k,:) = 0; kcum = [kcum k]; @@ -202,7 +202,7 @@ if options_.plot_shock_decomp.use_shock_groups end zothers = sum(z(:,1:nshocks,:),2); shock_groups.(['group' int2str(ngroups+1)]).label = 'Others'; - shock_groups.(['group' int2str(ngroups+1)]).shocks = cellstr(M_.exo_names(find(~ismember([1:M_.exo_nbr],kcum)),:))'; + shock_groups.(['group' int2str(ngroups+1)]).shocks = M_.exo_names(find(~ismember([1:M_.exo_nbr],kcum))); M_.shock_groups.(options_.plot_shock_decomp.use_shock_groups)=shock_groups; if any(any(zothers)) shock_names = [shock_names; {'Others + Initial Values'}]; @@ -340,9 +340,9 @@ z = z(:,:,a:b); options_.plot_shock_decomp.fig_name=fig_name; options_.plot_shock_decomp.orig_varlist = varlist; if detail_plot - graph_decomp_detail(z,shock_names,M_.endo_names,i_var,my_initial_date,M_,options_) + graph_decomp_detail(z, shock_names, M_.endo_names, i_var, my_initial_date, M_, options_) else - graph_decomp(z,shock_names,M_.endo_names,i_var,my_initial_date,M_,options_); + graph_decomp(z, shock_names, M_.endo_names, i_var, my_initial_date, M_, options_); end if write_xls diff --git a/matlab/pm3.m b/matlab/pm3.m index 695b641d8..f32468b40 100644 --- a/matlab/pm3.m +++ b/matlab/pm3.m @@ -1,8 +1,8 @@ function pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryName,var_type) -% pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryName,var_type) + % Computes, stores and plots the posterior moment statistics. % -% Inputs: +% INPUTS % n1 [scalar] size of first dimension of moment matrix % n2 [scalar] size of second dimension of moment matrix % ifil [scalar] number of moment files to load @@ -24,7 +24,7 @@ function pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryNa % See also the comment in posterior_sampler.m funtion. -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -51,11 +51,11 @@ if isempty(varlist) SelecVariables = (1:M_.endo_nbr)'; nvar = M_.endo_nbr; else - nvar = size(varlist,1); + nvar = length(varlist); SelecVariables = []; for i=1:nvar - if ~isempty(strmatch(varlist(i,:),names1,'exact')) - SelecVariables = [SelecVariables;strmatch(varlist(i,:),names1,'exact')]; + if ~isempty(strmatch(varlist{i}, names1, 'exact')) + SelecVariables = [SelecVariables; strmatch(varlist{i}, names1, 'exact')]; end end end @@ -63,14 +63,9 @@ if options_.TeX if isempty(tit_tex) tit_tex=names1; end - - varlist_TeX = []; + varlist_TeX = cell(nvar, 1); for i=1:nvar - if i==1 - varlist_TeX = tit_tex(SelecVariables(i),:); - else - varlist_TeX = char(varlist_TeX,tit_tex(SelecVariables(i),:)); - end + varlist_TeX(i) = {tit_tex{SelecVariables(i)}}; end end Mean = zeros(n2,nvar); @@ -244,7 +239,7 @@ end if strcmp(var_type,'_trend_coeff') || strcmp(var_type,'_smoothed_trend') || strcmp(var_type,'_smoothed_trend') for i = 1:nvar - name = deblank(names1(SelecVariables(i),:)); + name = deblank(names1{SelecVariables(i)}); oo_.Smoother.(name3).Mean.(name) = Mean(:,i); oo_.Smoother.(name3).Median.(name) = Median(:,i); oo_.Smoother.(name3).Var.(name) = Var(:,i); @@ -257,7 +252,7 @@ if strcmp(var_type,'_trend_coeff') || strcmp(var_type,'_smoothed_trend') || strc end else for i = 1:nvar - name = deblank(names1(SelecVariables(i),:)); + name = deblank(names1{SelecVariables(i)}); oo_.(name3).Mean.(name) = Mean(:,i); oo_.(name3).Median.(name) = Median(:,i); oo_.(name3).Var.(name) = Var(:,i); @@ -364,8 +359,8 @@ if ~options_.nograph && ~options_.no_graph.posterior i=i+1; if max(abs(Mean(:,i))) > 10^(-6) subplotnum = subplotnum+1; - name = deblank(varlist(i,:)); - texname = deblank(varlist_TeX(i,:)); + name = varlist{i}; + texname = varlist_TeX{i}; if subplotnum==1 NAMES = name; TEXNAMES = ['$' texname '$']; @@ -380,8 +375,8 @@ if ~options_.nograph && ~options_.no_graph.posterior fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:))); end fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,['\\includegraphics[width=%2.2f\\textwidth]{%s/Output/%s_' name3 '_%s}\n'],options_.figures.textwidth*min(subplotnum/nn,1),M_.dname,M_.fname,deblank(tit3(i,:))); - fprintf(fidTeX,'\\label{Fig:%s:%s}\n',name3,deblank(tit3(i,:))); + fprintf(fidTeX,['\\includegraphics[width=%2.2f\\textwidth]{%s/Output/%s_' name3 '_%s}\n'],options_.figures.textwidth*min(subplotnum/nn,1),M_.dname,M_.fname, tit3{i}); + fprintf(fidTeX,'\\label{Fig:%s:%s}\n',name3,tit3{i}); fprintf(fidTeX,'\\caption{%s}\n',tit1); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); diff --git a/matlab/pm3_core.m b/matlab/pm3_core.m index 881c4b423..b75950937 100644 --- a/matlab/pm3_core.m +++ b/matlab/pm3_core.m @@ -13,7 +13,7 @@ function myoutput=pm3_core(myinputs,fpar,nvar,whoiam, ThisMatlab) % SPECIAL REQUIREMENTS. % None. -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -108,7 +108,7 @@ for i=fpar:nvar end if subplotnum == MaxNumberOfPlotsPerFigure || i == nvar - dyn_saveas(hh,[M_.dname '/Output/' M_.fname '_' name3 '_' deblank(tit3(i,:))],options_.nodisplay,options_.graph_format); + dyn_saveas(hh,[M_.dname '/Output/' M_.fname '_' name3 '_' tit3{i}],options_.nodisplay,options_.graph_format); if RemoteFlag==1 OutputFileName = [OutputFileName; {[M_.dname, filesep, 'Output',filesep], [M_.fname '_' name3 '_' deblank(tit3(i,:)) '.*']}]; end diff --git a/matlab/posterior_analysis.m b/matlab/posterior_analysis.m index e49277410..ea780a46a 100644 --- a/matlab/posterior_analysis.m +++ b/matlab/posterior_analysis.m @@ -1,5 +1,6 @@ function oo_ = posterior_analysis(type,arg1,arg2,arg3,options_,M_,oo_) -% Copyright (C) 2008-2017 Dynare Team + +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -85,7 +86,7 @@ switch type oo_ = conditional_variance_decomposition_mc_analysis(SampleSize,'posterior',M_.dname,M_.fname,... arg3,M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_,options_); if ~all(M_.H==0) - if strmatch(vartan(arg1,:),options_.varobs,'exact') + if strmatch(arg1,options_.varobs,'exact') oo_ = conditional_variance_decomposition_ME_mc_analysis(SampleSize,'posterior',M_.dname,M_.fname,... arg3,M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_,options_); end diff --git a/matlab/print_info.m b/matlab/print_info.m index 76ec1d115..c5edbc626 100644 --- a/matlab/print_info.m +++ b/matlab/print_info.m @@ -11,7 +11,7 @@ function print_info(info, noprint, DynareOptions) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2005-2017 Dynare Team +% Copyright (C) 2005-2018 Dynare Team % % This file is part of Dynare. % @@ -55,12 +55,11 @@ if ~noprint case 8 if size(info,2)>=2 global M_; - disp_string=deblank(M_.param_names(info(2),:)); + disp_string = M_.param_names{info(2)}; for ii=1:length(info)-2 - disp_string=[disp_string,', ',deblank(M_.param_names(info(2+ii),:))]; + disp_string = [disp_string, ', ', M_.param_names{info(2+ii)}]; end - error(['The Jacobian contains NaNs because the following parameters are NaN: '... - disp_string]) + error(['The Jacobian contains NaNs because the following parameters are NaN: ' disp_string]) else error(['The Jacobian contains NaNs. For more information, use options_.debug.']) end diff --git a/matlab/print_moments_implied_prior.m b/matlab/print_moments_implied_prior.m index 94d14cb02..2d6e52d4f 100644 --- a/matlab/print_moments_implied_prior.m +++ b/matlab/print_moments_implied_prior.m @@ -3,7 +3,7 @@ function print_moments_implied_prior(ModelInfo, mm, vm, mv, vv) % This routine prints in the command window some descriptive statistics % about the endogenous variables implied prior moments. -% Copyright (C) 2016-2017 Dynare Team +% Copyright (C) 2016-2018 Dynare Team % % This file is part of Dynare. % @@ -29,7 +29,7 @@ T1 = 'VARIABLE '; T2 = sprintf('Prior mean \t Prior st. dev.'); for i=1:ModelInfo.orig_endo_nbr - Name = deblank(ModelInfo.endo_names(i, :)); + Name = ModelInfo.endo_names{i}; T1 = strvcat(T1, Name); str = sprintf(' %6.4f \t %6.4f', mm(i), sqrt(vm(i))); T2 = strvcat(T2, str); @@ -55,8 +55,8 @@ T2b = 'Prior st.dev.'; for i=1:ModelInfo.orig_endo_nbr for j=i:ModelInfo.orig_endo_nbr - Name1 = deblank(ModelInfo.endo_names(i, :)); - Name2 = deblank(ModelInfo.endo_names(j, :)); + Name1 = ModelInfo.endo_names{i}; + Name2 = ModelInfo.endo_names{j}; T1a = strvcat(T1a, Name1); T1b = strvcat(T1b, Name2); sta = sprintf('%12.8f', mv(i,j)); diff --git a/matlab/prior_posterior_statistics.m b/matlab/prior_posterior_statistics.m index 1836d4a7f..501d26e35 100644 --- a/matlab/prior_posterior_statistics.m +++ b/matlab/prior_posterior_statistics.m @@ -17,9 +17,9 @@ function prior_posterior_statistics(type,dataset,dataset_info) % % PARALLEL CONTEXT % See the comments in the posterior_sampler.m funtion. -% -% -% Copyright (C) 2005-2017 Dynare Team + + +% Copyright (C) 2005-2018 Dynare Team % % This file is part of Dynare. % @@ -123,13 +123,13 @@ end varlist = options_.varlist; if isempty(varlist) - varlist = char(sort(cellstr(M_.endo_names(1:M_.orig_endo_nbr,:)))); + varlist = sort(M_.endo_names(1:M_.orig_endo_nbr)); end -nvar = size(varlist,1); +nvar = length(varlist); SelecVariables = []; for i=1:nvar - if ~isempty(strmatch(varlist(i,:),M_.endo_names,'exact')) - SelecVariables = [SelecVariables;strmatch(varlist(i,:),M_.endo_names,'exact')]; + if ~isempty(strmatch(varlist{i}, M_.endo_names, 'exact')) + SelecVariables = [SelecVariables; strmatch(varlist{i}, M_.endo_names, 'exact')]; end end @@ -327,7 +327,7 @@ end if options_.smoother pm3(endo_nbr,gend,ifil(1),B,'Smoothed variables',... - '',varlist,M_.endo_names_tex,M_.endo_names,... + '',varlist, M_.endo_names_tex,M_.endo_names,... varlist,'SmoothedVariables',DirectoryName,'_smooth'); pm3(exo_nbr,gend,ifil(2),B,'Smoothed shocks',... '',M_.exo_names,M_.exo_names_tex,M_.exo_names,... @@ -353,11 +353,9 @@ if options_.smoother if nvn for obs_iter=1:length(options_.varobs) - meas_error_names{obs_iter,1}=['SE_EOBS_' M_.endo_names(strmatch(options_.varobs{obs_iter},M_.endo_names,'exact'),:)]; - texnames{obs_iter,1}=['SE_EOBS_' M_.endo_names_tex(strmatch(options_.varobs{obs_iter},M_.endo_names,'exact'),:)]; + meas_error_names{obs_iter,1}=['SE_EOBS_' M_.endo_names{strmatch(options_.varobs{obs_iter},M_.endo_names,'exact')}]; + texnames{obs_iter,1}=['SE_EOBS_' M_.endo_names_tex{strmatch(options_.varobs{obs_iter},M_.endo_names,'exact')}]; end - meas_error_names=char(meas_error_names); - texnames=char(texnames); pm3(meas_err_nbr,gend,ifil(3),B,'Smoothed measurement errors',... '',meas_error_names,texnames,meas_error_names,... meas_error_names,'SmoothedMeasurementErrors',DirectoryName,'_error') @@ -378,17 +376,16 @@ if options_.forecast '',varlist,M_.endo_names_tex,M_.endo_names,... varlist,'PointForecast',DirectoryName,'_forc_point'); if ~isequal(M_.H,0) && ~isempty(intersect(options_.varobs,varlist)) - texnames=[]; + texnames = cell(length(options_.varobs), 1); + obs_names = cell(length(options_.varobs), 1); for obs_iter=1:length(options_.varobs) - obs_names{obs_iter,1}=M_.endo_names(strmatch(options_.varobs{obs_iter},M_.endo_names,'exact'),:); - texnames{obs_iter,1}=M_.endo_names_tex(strmatch(options_.varobs{obs_iter},M_.endo_names,'exact'),:); + obs_names{obs_iter}=M_.endo_names{strmatch(options_.varobs{obs_iter},M_.endo_names,'exact')}; + texnames{obs_iter}=M_.endo_names_tex{strmatch(options_.varobs{obs_iter},M_.endo_names,'exact')}; end - obs_names=char(obs_names); - texnames=char(texnames); varlist_forecast_ME=intersect(options_.varobs,varlist); pm3(meas_err_nbr,horizon,ifil(12),B,'Forecasted variables (point) with ME',... - '',char(varlist_forecast_ME),texnames,obs_names,... - char(varlist_forecast_ME),'PointForecastME',DirectoryName,'_forc_point_ME') + '',varlist_forecast_ME,texnames,obs_names,... + varlist_forecast_ME,'PointForecastME',DirectoryName,'_forc_point_ME') end end diff --git a/matlab/prior_sampler.m b/matlab/prior_sampler.m index e846cd021..ccc0dc415 100644 --- a/matlab/prior_sampler.m +++ b/matlab/prior_sampler.m @@ -13,7 +13,7 @@ function results = prior_sampler(drsave,M_,bayestopt_,options_,oo_,estim_params_ % SPECIAL REQUIREMENTS % none -% Copyright (C) 2009-2016 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -53,7 +53,7 @@ count_nonpositive_steadystate = 0; count_unknown_problem = 0; NumberOfSimulations = options_.prior_mc; NumberOfParameters = length(bayestopt_.p1); -NumberOfEndogenousVariables = size(M_.endo_names,1); +NumberOfEndogenousVariables = M_.endo_nbr; NumberOfElementsPerFile = ceil(options_.MaxNumberOfBytes/NumberOfParameters/NumberOfEndogenousVariables/8) ; if NumberOfSimulations <= NumberOfElementsPerFile diff --git a/matlab/ramsey_policy.m b/matlab/ramsey_policy.m index 2ca9079fe..bde0aaa12 100644 --- a/matlab/ramsey_policy.m +++ b/matlab/ramsey_policy.m @@ -1,6 +1,6 @@ function info = ramsey_policy(var_list) -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -46,9 +46,8 @@ oo_.steady_state = oo_.dr.ys; if options_.noprint == 0 disp_steady_state(M_,oo_) for i=M_.orig_endo_nbr:M_.endo_nbr - if strmatch('mult_',M_.endo_names(i,:)) - disp(sprintf('%s \t\t %g',M_.endo_names(i,:), ... - oo_.dr.ys(i))); + if strmatch('mult_', M_.endo_names{i}) + disp(sprintf('%s \t\t %g', M_.endo_names{i}, oo_.dr.ys(i))); end end end diff --git a/matlab/read_data_.m b/matlab/read_data_.m index d7de0843d..d42174115 100644 --- a/matlab/read_data_.m +++ b/matlab/read_data_.m @@ -12,7 +12,7 @@ function read_data_() % SPECIAL REQUIREMENT % none -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -71,7 +71,5 @@ if size(oo_.exo_simul,1) < M_.maximum_lag+M_.maximum_lead+options_.periods oo_.exo_simul=(Values(positions,:))'; fclose(fid); end -%disp([allVariables M_.endo_names]); -%disp(positions); end \ No newline at end of file diff --git a/matlab/realtime_shock_decomposition.m b/matlab/realtime_shock_decomposition.m index 64bf96c6f..9b2159566 100644 --- a/matlab/realtime_shock_decomposition.m +++ b/matlab/realtime_shock_decomposition.m @@ -22,7 +22,7 @@ function oo_ = realtime_shock_decomposition(M_,oo_,options_,varlist,bayestopt_,e % SPECIAL REQUIREMENTS % none -% Copyright (C) 2009-2017 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -40,12 +40,12 @@ function oo_ = realtime_shock_decomposition(M_,oo_,options_,varlist,bayestopt_,e % along with Dynare. If not, see . % indices of endogenous variables -if size(varlist,1) == 0 - varlist = M_.endo_names(1:M_.orig_endo_nbr,:); +if isempty(varlist) + varlist = M_.endo_names(1:M_.orig_endo_nbr); end -[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names); -varlist=varlist(index_uniques,:); +[i_var, nvar, index_uniques] = varlist_indices(varlist,M_.endo_names); +varlist = varlist(index_uniques); % number of variables endo_nbr = M_.endo_nbr; @@ -131,10 +131,10 @@ for j=presample+1:nobs end % initialization - gend = size(oo.SmoothedShocks.(deblank(M_.exo_names(1,:))),1); + gend = length(oo.SmoothedShocks.(M_.exo_names{1})); epsilon=NaN(nshocks,gend); for i=1:nshocks - epsilon(i,:) = oo.SmoothedShocks.(deblank(M_.exo_names(i,:))); + epsilon(i,:) = oo.SmoothedShocks.(M_.exo_names{i}); end epsilon=[epsilon zeros(nshocks,forecast_)]; diff --git a/matlab/resid.m b/matlab/resid.m index f124409c1..4b6e3721b 100644 --- a/matlab/resid.m +++ b/matlab/resid.m @@ -12,7 +12,7 @@ function z = resid(junk) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -56,7 +56,7 @@ if any(imag(oo_.steady_state)) if ~isempty(imagrow) fprintf('\nresid: The initial values for the steady state of the following variables are complex:\n'); for iter=1:length(imagrow) - fprintf('%s\n',M_.endo_names(imagrow(iter),:)); + fprintf('%s\n', M_.endo_names{imagrow(iter)}); end end end diff --git a/matlab/resol.m b/matlab/resol.m index e2c55ecc4..8cee960d5 100644 --- a/matlab/resol.m +++ b/matlab/resol.m @@ -76,7 +76,7 @@ function [dr,info,M,options,oo] = resol(check_flag,M,options,oo) %! @end deftypefn %@eod: -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -115,7 +115,7 @@ if options.loglinear idx = find(dr.ys(get_all_variables_but_lagged_leaded_exogenous(M)) 1 + if length(s1) > 1 if isoctave legend(s1); else @@ -94,20 +94,20 @@ if rplottype == 0 set(h, 'Interpreter', 'none'); end end - dyn_saveas(hh,[M_.fname, filesep, 'graphs', filesep, 'SimulatedTrajectory_' deblank(s1(1,:))],options_.nodisplay,options_.graph_format) + dyn_saveas(hh,[M_.fname, filesep, 'graphs', filesep, 'SimulatedTrajectory_' s1{1}],options_.nodisplay,options_.graph_format) if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format))) - create_TeX_loader(fidTeX,options_,[M_.fname, '/graphs/', 'SimulatedTrajectory_' deblank(s1(1,:))],'Simulated trajectories','SimulatedTrajectory_',deblank(s1(1,:)),1) + create_TeX_loader(fidTeX,options_,[M_.fname, '/graphs/', 'SimulatedTrajectory_' s1{1}],'Simulated trajectories','SimulatedTrajectory_',s1{1},1) end elseif rplottype == 1 for j = 1:size(y,1) hh=dyn_figure(options_.nodisplay,'Name',['Simulated Trajectory']); plot(ix(i),y(j,i)) ; xlim([min(ix(i)) max(ix(i))]) - title(['Plot of ' s1(j,:)],'Interpreter','none') ; + title(['Plot of ' s1{j}],'Interpreter','none') ; xlabel('Periods') ; - dyn_saveas(hh,[M_.fname, filesep, 'graphs', filesep, 'SimulatedTrajectory_' deblank(s1(j,:))],options_.nodisplay,options_.graph_format) + dyn_saveas(hh,[M_.fname, filesep, 'graphs', filesep, 'SimulatedTrajectory_' s1{j}],options_.nodisplay,options_.graph_format) if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format))) - create_TeX_loader(fidTeX,options_,[M_.fname, '/graphs/', 'SimulatedTrajectory_' deblank(s1(j,:))],'Simulated trajectories','SimulatedTrajectory_',deblank(s1(j,:)),1); + create_TeX_loader(fidTeX,options_,[M_.fname, '/graphs/', 'SimulatedTrajectory_' s1{j}],'Simulated trajectories','SimulatedTrajectory_',s1{j},1); end end elseif rplottype == 2 @@ -118,19 +118,19 @@ elseif rplottype == 2 subplot(nl,nc,j) ; plot(ix(i),y(j,i)) ; hold on ; - if ~isempty(strmatch(deblank(s1(j,:)),M_.endo_names,'exact')) - plot(ix(i),oo_.steady_state(strmatch(deblank(s1(j,:)),M_.endo_names,'exact'))*ones(1,size(i,1)),'r:') ; + if ~isempty(strmatch(s1{j},M_.endo_names,'exact')) + plot(ix(i),oo_.steady_state(strmatch(s1{j},M_.endo_names,'exact'))*ones(1,size(i,1)),'r:') ; else - plot(ix(i),oo_.exo_steady_state(strmatch(deblank(s1(j,:)),M_.exo_names,'exact'))*ones(1,size(i,1)),'r:') ; + plot(ix(i),oo_.exo_steady_state(strmatch(s1{j},M_.exo_names,'exact'))*ones(1,size(i,1)),'r:') ; end xlabel('Periods') ; - ylabel([s1(j,:)],'Interpreter','none') ; - title(['Plot of ' s1(j,:)],'Interpreter','none') ; + ylabel([s1{j}],'Interpreter','none') ; + title(['Plot of ' s1{j}],'Interpreter','none') ; axis tight; end - dyn_saveas(hh,[M_.fname, filesep, 'graphs', filesep, 'SimulatedTrajectory_' deblank(s1(1,:))],options_.nodisplay,options_.graph_format) + dyn_saveas(hh,[M_.fname, filesep, 'graphs', filesep, 'SimulatedTrajectory_' s1{1}],options_.nodisplay,options_.graph_format) if options_.TeX && any(strcmp('eps',cellstr(options_.graph_format))) - create_TeX_loader(fidTeX,options_,[M_.fname, '/graphs/', 'SimulatedTrajectory_' deblank(s1(1,:))],'Simulated trajectories','SimulatedTrajectory_',deblank(s1(1,:)),min(j/nc,1)); + create_TeX_loader(fidTeX,options_,[M_.fname, '/graphs/', 'SimulatedTrajectory_' s1{1}],'Simulated trajectories','SimulatedTrajectory_', s1{1},min(j/nc,1)); end end diff --git a/matlab/save_params_and_steady_state.m b/matlab/save_params_and_steady_state.m index 273800fce..70e08b60f 100644 --- a/matlab/save_params_and_steady_state.m +++ b/matlab/save_params_and_steady_state.m @@ -22,7 +22,7 @@ function save_params_and_steady_state(filename) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -47,19 +47,19 @@ if fid < 0 end for i = 1:M_.param_nbr - fprintf(fid, '%s %.16g\n', M_.param_names(i,:), M_.params(i)); + fprintf(fid, '%s %.16g\n', M_.param_names{i}, M_.params(i)); end for i = 1:M_.endo_nbr - fprintf(fid, '%s %.16g\n', M_.endo_names(i,:), oo_.steady_state(i)); + fprintf(fid, '%s %.16g\n', M_.endo_names{i}, oo_.steady_state(i)); end for i = 1:M_.exo_nbr - fprintf(fid, '%s %.16g\n', M_.exo_names(i,:), oo_.exo_steady_state(i)); + fprintf(fid, '%s %.16g\n', M_.exo_names{i}, oo_.exo_steady_state(i)); end for i = 1:M_.exo_det_nbr - fprintf(fid, '%s %.16g\n', M_.exo_det_names(i,:), oo_.exo_det_steady_state(i)); + fprintf(fid, '%s %.16g\n', M_.exo_det_names{i}, oo_.exo_det_steady_state(i)); end fclose(fid); diff --git a/matlab/send_endogenous_variables_to_workspace.m b/matlab/send_endogenous_variables_to_workspace.m index f1ef2b19a..9d7872f5e 100644 --- a/matlab/send_endogenous_variables_to_workspace.m +++ b/matlab/send_endogenous_variables_to_workspace.m @@ -1,7 +1,7 @@ function send_endogenous_variables_to_workspace() % Saves all the endogenous variables in matlab's workspace. -% Copyright (C) 2009 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -18,6 +18,7 @@ function send_endogenous_variables_to_workspace() % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . global M_ oo_ + for idx = 1:M_.endo_nbr - assignin('base',deblank(M_.endo_names(idx,:)),oo_.endo_simul(idx,:)) + assignin('base', M_.endo_names{idx}, oo_.endo_simul(idx,:)) end \ No newline at end of file diff --git a/matlab/set_default_option.m b/matlab/set_default_option.m index 44976a15a..8b91d5e26 100644 --- a/matlab/set_default_option.m +++ b/matlab/set_default_option.m @@ -14,7 +14,7 @@ function options=set_default_option(options,field,default) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -41,9 +41,11 @@ if isempty(options.(field)) return end -if isnan(options.(field)) - options.(field) = default; - return +if ~iscell(options.(field)) + if isnan(options.(field)) + options.(field) = default; + return + end end % 06/07/03 MJ added ; to eval expression \ No newline at end of file diff --git a/matlab/set_historical_values.m b/matlab/set_historical_values.m index af72e2981..817228dab 100644 --- a/matlab/set_historical_values.m +++ b/matlab/set_historical_values.m @@ -8,7 +8,8 @@ function set_historical_values(ds, initialperiod) % % OUTPUTS % - none -% Copyright (C) 2017 Dynare Team + +% Copyright (C) 2018 Dynare Team % % This file is part of Dynare. % @@ -43,21 +44,21 @@ k = 1; for i = 1:M_.endo_nbr if i <= M_.orig_endo_nbr if M_.lead_lag_incidence(1,i) > 0 - if any(strcmp(deblank(M_.endo_names(i,:)),ds.name)) - M_.endo_histval(i,M_.maximum_endo_lag) = ... - ds{deblank(M_.endo_names(i,:))}(initialperiod).data; + if any(strcmp(M_.endo_names{i}, ds.name)) + M_.endo_histval(i, M_.maximum_endo_lag) = ... + ds{M_.endo_names{i}}(initialperiod).data; else - error(sprintf('Can''t find %s in dseries', deblank(M_.endo_names(i,:)))) + error(sprintf('Can''t find %s in dseries', M_.endo_names{i})) end end else a = M_.aux_vars(k); if a.type == 1 - if any(strcmp(deblank(M_.endo_names(a.orig_index,:)), ds.name)) + if any(strcmp(M_.endo_names{a.orig_index}, ds.name)) M_.endo_histval(i,M_.maximum_endo_lag) = ... - ds{deblank(M_.endo_names(a.orig_index,:))}(initialperiod+a.orig_lead_lag).data; + ds{M_.endo_names{a.orig_index}}(initialperiod+a.orig_lead_lag).data; else - error(sprintf('Can''t find %s in dseries', deblank(M_.endo_names(a.orig_index,:)))) + error(sprintf('Can''t find %s in dseries', M_.endo_names{a.orig_index})) end end k = k + 1; @@ -67,7 +68,7 @@ end % If model has lags on exogenous variables, initialize and fill exo_histval if M_.maximum_exo_lag M_.exo_histval = zeros(M_.maximum_exo_lag, M_.exo_nbr); - exo_list = cellstr(M_.exo_names); + exo_list = M_.exo_names; available_exo_variables = ismember(exo_list, ds.name); if any(~available_exo_variables) skipline() diff --git a/matlab/set_local_param_value.m b/matlab/set_local_param_value.m index 52e88341d..090341dfe 100644 --- a/matlab/set_local_param_value.m +++ b/matlab/set_local_param_value.m @@ -1,6 +1,6 @@ function M = set_local_param_value(pname,value,M) -% Copyright (C) 2017 Dynare Team +% Copyright (C) 2017-2018 Dynare Team % % This file is part of Dynare. % @@ -18,7 +18,7 @@ function M = set_local_param_value(pname,value,M) % along with Dynare. If not, see . -i = strmatch(pname,M.param_names,'exact'); +i = strmatch(pname, M.param_names, 'exact'); if isempty(i) error(['Parameter name ' pname ' doesn''t exist']) diff --git a/matlab/set_prior.m b/matlab/set_prior.m index dc7922916..c1afa6e06 100644 --- a/matlab/set_prior.m +++ b/matlab/set_prior.m @@ -18,7 +18,7 @@ function [xparam1, estim_params_, bayestopt_, lb, ub, M_]=set_prior(estim_params % SPECIAL REQUIREMENTS % None -% Copyright (C) 2003-2017 Dynare Team +% Copyright (C) 2003-2018 Dynare Team % % This file is part of Dynare. % @@ -71,7 +71,7 @@ if nvx bayestopt_.p3 = estim_params_.var_exo(:,8); %take generalized distribution into account bayestopt_.p4 = estim_params_.var_exo(:,9); %take generalized distribution into account bayestopt_.jscale = estim_params_.var_exo(:,10); - bayestopt_.name = cellstr(M_.exo_names(estim_params_.var_exo(:,1),:)); + bayestopt_.name = M_.exo_names(estim_params_.var_exo(:,1)); end if nvn estim_params_.nvn_observable_correspondence=NaN(nvn,1); % stores number of corresponding observable @@ -81,9 +81,9 @@ if nvn M_.Correlation_matrix_ME = eye(nvarobs); end for i=1:nvn - obsi_ = strmatch(deblank(M_.endo_names(estim_params_.var_endo(i,1),:)),options_.varobs,'exact'); + obsi_ = strmatch(M_.endo_names{estim_params_.var_endo(i,1)}, options_.varobs, 'exact'); if isempty(obsi_) - error(['The variable ' deblank(M_.endo_names(estim_params_.var_endo(i,1),:)) ' has to be declared as observable since you assume a measurement error on it.']) + error(['The variable ' M_.endo_names{estim_params_.var_endo(i,1)} ' has to be declared as observable since you assume a measurement error on it.']) end estim_params_.nvn_observable_correspondence(i,1)=obsi_; end @@ -96,7 +96,7 @@ if nvn bayestopt_.p3 = [ bayestopt_.p3; estim_params_.var_endo(:,8)]; %take generalized distribution into account bayestopt_.p4 = [ bayestopt_.p4; estim_params_.var_endo(:,9)]; %take generalized distribution into account bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.var_endo(:,10)]; - bayestopt_.name = [ bayestopt_.name; transpose(options_.varobs(estim_params_.nvn_observable_correspondence))]; + bayestopt_.name = [ bayestopt_.name; options_.varobs(estim_params_.nvn_observable_correspondence)]; end if ncx xparam1 = [xparam1; estim_params_.corrx(:,3)]; @@ -108,9 +108,13 @@ if ncx bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrx(:,9)]; %take generalized distribution into account bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrx(:,10)]; %take generalized distribution into account bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrx(:,11)]; - bayestopt_.name = [bayestopt_.name; cellstr([repmat('corr ',ncx,1)... - deblank(M_.exo_names(estim_params_.corrx(:,1),:)) ... - repmat(', ',ncx,1) , deblank(M_.exo_names(estim_params_.corrx(:,2),:))])]; + baseid = length(bayestopt_.name); + bayestopt_.name = [bayestopt_.name; cell(ncx, 1)]; + for i = 1:ncx + bayestopt_.name(baseid+i) = {sprintf('corr %s, %s', ... + M_.exo_names{estim_params_.corrx(i,1)}, ... + M_.exo_names{estim_params_.corrx(i,2)})}; + end end if ncn estim_params_.corrn_observable_correspondence=NaN(ncn,2); @@ -128,15 +132,19 @@ if ncn bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrn(:,9)]; %take generalized distribution into account bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrn(:,10)]; %take generalized distribution into account bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrn(:,11)]; - bayestopt_.name = [bayestopt_.name; cellstr([repmat('corr ',ncn,1) ... - deblank(M_.endo_names(estim_params_.corrn(:,1),:)) ... - repmat(', ',ncn,1) , deblank(M_.endo_names(estim_params_.corrn(:,2),:))])]; + baseid = length(bayestopt_.name); + bayestopt_.name = [bayestopt_.name; cell(ncn, 1)]; [bayestopt_.name; cellstr([repmat('corr ',ncn,1) ... + M_.endo_names{estim_params_.corrn(:,1)} ... + repmat(', ',ncn,1) , M_.endo_names{estim_params_.corrn(:,2)}])]; for i=1:ncn k1 = estim_params_.corrn(i,1); k2 = estim_params_.corrn(i,2); - obsi1 = strmatch(deblank(M_.endo_names(k1,:)),options_.varobs,'exact'); %find correspondence to varobs to construct H in set_all_paramters - obsi2 = strmatch(deblank(M_.endo_names(k2,:)),options_.varobs,'exact'); - estim_params_.corrn_observable_correspondence(i,:)=[obsi1,obsi2]; %save correspondence + bayestopt_.name(baseid+i) = {sprintf('corr %s, %s', M_.endo_names{k1}, M_.endo_names{k2})}; + % find correspondence to varobs to construct H in set_all_paramters + obsi1 = strmatch(M_.endo_names{k1}, options_.varobs, 'exact'); + obsi2 = strmatch(M_.endo_names{k2}, options_.varobs, 'exact'); + % save correspondence + estim_params_.corrn_observable_correspondence(i,:)=[obsi1, obsi2]; end end if np @@ -149,7 +157,7 @@ if np bayestopt_.p3 = [ bayestopt_.p3; estim_params_.param_vals(:,8)]; %take generalized distribution into account bayestopt_.p4 = [ bayestopt_.p4; estim_params_.param_vals(:,9)]; %take generalized distribution into account bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.param_vals(:,10)]; - bayestopt_.name = [bayestopt_.name; cellstr(M_.param_names(estim_params_.param_vals(:,1),:))]; + bayestopt_.name = [bayestopt_.name; M_.param_names(estim_params_.param_vals(:,1))]; end bayestopt_.p6 = NaN(size(bayestopt_.p1)) ; diff --git a/matlab/shock_decomposition.m b/matlab/shock_decomposition.m index 1785e8c08..c35bf5e59 100644 --- a/matlab/shock_decomposition.m +++ b/matlab/shock_decomposition.m @@ -23,7 +23,7 @@ function [oo_,M_] = shock_decomposition(M_,oo_,options_,varlist,bayestopt_,estim % SPECIAL REQUIREMENTS % none -% Copyright (C) 2009-2017 Dynare Team +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -41,12 +41,12 @@ function [oo_,M_] = shock_decomposition(M_,oo_,options_,varlist,bayestopt_,estim % along with Dynare. If not, see . % indices of endogenous variables -if size(varlist,1) == 0 - varlist = M_.endo_names(1:M_.orig_endo_nbr,:); +if isempty(varlist) + varlist = M_.endo_names(1:M_.orig_endo_nbr); end -[i_var,nvar,index_uniques] = varlist_indices(varlist,M_.endo_names); -varlist=varlist(index_uniques,:); +[i_var,nvar,index_uniques] = varlist_indices(varlist, M_.endo_names); +varlist = varlist(index_uniques); % number of variables endo_nbr = M_.endo_nbr; @@ -87,10 +87,10 @@ A = dr.ghx; B = dr.ghu; % initialization -gend = size(oo_.SmoothedShocks.(deblank(M_.exo_names(1,:))),1); +gend = size(oo_.SmoothedShocks.(M_.exo_names{1}),1); epsilon=NaN(nshocks,gend); for i=1:nshocks - epsilon(i,:) = oo_.SmoothedShocks.(deblank(M_.exo_names(i,:))); + epsilon(i,:) = oo_.SmoothedShocks.(M_.exo_names{i}); end z = zeros(endo_nbr,nshocks+2,gend); diff --git a/matlab/simulated_moment_uncertainty.m b/matlab/simulated_moment_uncertainty.m index 14ca70429..8a892cc5a 100644 --- a/matlab/simulated_moment_uncertainty.m +++ b/matlab/simulated_moment_uncertainty.m @@ -11,8 +11,8 @@ function [cmm, mm] = simulated_moment_uncertainty(indx, periods, replic,options_ % Outputs: % - cmm: [n_moments by n_moments] covariance matrix of simulated moments % - mm: [n_moments by replic] matrix of moments -% -% Copyright (C) 2009-2017 Dynare Team + +% Copyright (C) 2009-2018 Dynare Team % % This file is part of Dynare. % @@ -96,7 +96,7 @@ end for j=1:replic [ys, oo_] = simult(y0,oo_.dr,M_,options_,oo_);%do simulation - oo_=disp_moments(ys,char(options_.varobs),M_,options_,oo_); %get moments + oo_=disp_moments(ys, options_.varobs,M_,options_,oo_); %get moments dum=[oo_.mean; dyn_vech(oo_.var)]; sd = sqrt(diag(oo_.var)); for i=1:options_.ar diff --git a/matlab/simulated_moments_estimation.m b/matlab/simulated_moments_estimation.m index b01e5e9d3..2d90a9aaa 100644 --- a/matlab/simulated_moments_estimation.m +++ b/matlab/simulated_moments_estimation.m @@ -14,7 +14,7 @@ function [param,sigma] = simulated_moments_estimation(dataset,options,parallel) % SPECIAL REQUIREMENTS % The user has to provide a file where the moment conditions are defined. -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -54,17 +54,17 @@ options.estimated_parameters.list = []; xparam = []; if ~isempty(estim_params_.var_exo) options.estimated_variances.idx = estim_params_.var_exo(:,1); - options.estimated_parameters.list = char(M_.exo_names(options.estimated_variances.idx,:)); + options.estimated_parameters.list = char(M_.exo_names(options.estimated_variances.idx)); options.estimated_parameters.nv = rows(estim_params_.var_exo); xparam = [xparam; estim_params_.var_exo(:,2)]; end if ~isempty(estim_params_.param_vals) options.estimated_parameters.idx = estim_params_.param_vals(:,1); if isempty(options.estimated_parameters.list) - options.estimated_parameters.list = char(M_.param_names(options.estimated_parameters.idx,:)); + options.estimated_parameters.list = char(M_.param_names(options.estimated_parameters.idx)); else options.estimated_parameters.list = char(options.estimated_parameters.list,... - M_.param_names(options.estimated_parameters.idx,:)); + M_.param_names(options.estimated_parameters.idx)); end options.estimated_parameters.np = rows(estim_params_.param_vals); xparam = [xparam; estim_params_.param_vals(:,2)]; diff --git a/matlab/simultxdet.m b/matlab/simultxdet.m index 21f0421e4..772582991 100644 --- a/matlab/simultxdet.m +++ b/matlab/simultxdet.m @@ -22,7 +22,7 @@ function [y_,int_width,int_width_ME]=simultxdet(y0,ex,ex_det, iorder,var_list,M_ % The condition size(ex,1)+M_.maximum_lag=size(ex_det,1) must be verified % for consistency. -% Copyright (C) 2008-2017 Dynare Team +% Copyright (C) 2008-2018 Dynare Team % % This file is part of Dynare. % @@ -61,16 +61,16 @@ k3 = find(k3(:)); k4 = dr.kstate(find(dr.kstate(:,2) < ykmin+1),[1 2]); k4 = k4(:,1)+(ykmin+1-k4(:,2))*endo_nbr; -nvar = size(var_list,1); +nvar = length(var_list); if nvar == 0 nvar = endo_nbr; ivar = [1:nvar]; else ivar=zeros(nvar,1); for i=1:nvar - i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact'); + i_tmp = strmatch(var_list{i}, M_.endo_names, 'exact'); if isempty(i_tmp) - disp(var_list(i,:)); + disp(var_list{i}) error (['One of the variable specified does not exist']) ; else ivar(i) = i_tmp; @@ -83,8 +83,7 @@ if iorder == 1 tempx1 = y_(dr.order_var,k1); tempx2 = tempx1-repmat(dr.ys(dr.order_var),1,ykmin); tempx = tempx2(k2); - y_(dr.order_var,i) = dr.ys(dr.order_var)+dr.ghx*tempx+dr.ghu* ... - ex(i-ykmin,:)'; + y_(dr.order_var,i) = dr.ys(dr.order_var)+dr.ghx*tempx+dr.ghu*ex(i-ykmin,:)'; for j=1:min(ykmin+M_.exo_det_length+1-i,M_.exo_det_length) y_(dr.order_var,i) = y_(dr.order_var,i) + dr.ghud{j}*(ex_det(i+j-1,:)'-exo_det_steady_state); end diff --git a/matlab/smoother2histval.m b/matlab/smoother2histval.m index 5d6a67f1d..2668bbef9 100644 --- a/matlab/smoother2histval.m +++ b/matlab/smoother2histval.m @@ -24,7 +24,7 @@ function smoother2histval(opts) % % The function also uses the value of option_.parameter_set -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -198,10 +198,10 @@ for i = 1:length(M_.aux_vars) end if M_.aux_vars(i).type == 1 % Endogenous - orig_var = deblank(M_.endo_names(M_.aux_vars(i).orig_index, :)); + orig_var = M_.endo_names{M_.aux_vars(i).orig_index}; else % Exogenous - orig_var = deblank(M_.exo_names(M_.aux_vars(i).orig_index, :)); + orig_var = M_.exo_names{M_.aux_vars(i).orig_index}; end [m, k] = ismember(orig_var, outvars); if m diff --git a/matlab/solve_one_boundary.m b/matlab/solve_one_boundary.m index a579ea67e..e121fbf2b 100644 --- a/matlab/solve_one_boundary.m +++ b/matlab/solve_one_boundary.m @@ -55,7 +55,7 @@ function [y, info] = solve_one_boundary(fname, y, x, params, steady_state, ... % none. % -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -108,9 +108,9 @@ for it_=start:incr:finish if verbose==1 disp(['iteration : ' int2str(iter+1) ' => ' num2str(max_res) ' time = ' int2str(it_)]) if is_dynamic - disp([M.endo_names(y_index_eq,:) num2str([y(it_,y_index_eq)' r g1])]) + disp([M.endo_names{y_index_eq} num2str([y(it_,y_index_eq)' r g1])]) else - disp([M.endo_names(y_index_eq,:) num2str([y(y_index_eq) r g1])]) + disp([M.endo_names{y_index_eq} num2str([y(y_index_eq) r g1])]) end end if ~isreal(max_res) || isnan(max_res) diff --git a/matlab/solve_two_boundaries.m b/matlab/solve_two_boundaries.m index 4b5904946..3cfb7626b 100644 --- a/matlab/solve_two_boundaries.m +++ b/matlab/solve_two_boundaries.m @@ -46,7 +46,7 @@ function [y, oo]= solve_two_boundaries(fname, y, x, params, steady_state, y_inde % none. % -% Copyright (C) 1996-2017 Dynare Team +% Copyright (C) 1996-2018 Dynare Team % % This file is part of Dynare. % @@ -104,7 +104,7 @@ while ~(cvg==1 || iter>maxit_) if iter>0 if ~isreal(max_res) || isnan(max_res) || (max_resa1) if verbose && ~isreal(max_res) - disp(['Variable ' M.endo_names(max_indx,:) ' (' int2str(max_indx) ') returns an undefined value']); + disp(['Variable ' M.endo_names{max_indx} ' (' int2str(max_indx) ') returns an undefined value']); end if isnan(max_res) detJ=det(g1aa); diff --git a/matlab/steady.m b/matlab/steady.m index 3e0ec0095..de0407bd4 100644 --- a/matlab/steady.m +++ b/matlab/steady.m @@ -11,7 +11,7 @@ function steady() % SPECIAL REQUIREMENTS % none -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -59,15 +59,15 @@ if info(1) disp('WARNING: homotopy step was not completed') disp('The last values for which a solution was found are:') for i=1:length(ip) - disp(sprintf('%12s %12.6f',M_.param_names(hv(ip(i),2),:), ... + disp(sprintf('%12s %12.6f',char(M_.param_names(hv(ip(i),2))), ... M_.params(hv(ip(i),2)))) end for i=1:length(ix) - disp(sprintf('%12s %12.6f',M_.exo_names(hv(ix(i),2),:), ... + disp(sprintf('%12s %12.6f',char(M_.exo_names(hv(ix(i),2))), ... oo_.exo_steady_state(hv(ix(i),2)))) end for i=1:length(ixd) - disp(sprintf('%12s %12.6f',M_.exo_det_names(hv(ixd(i),2),:), ... + disp(sprintf('%12s %12.6f',char(M_.exo_det_names(hv(ixd(i),2))), ... oo_.exo_det_steady_state(hv(ixd(i),2)))) end @@ -98,7 +98,7 @@ else if options_.debug fprintf('\nThe steady state computation failed. It terminated with the following values:\n') for i=1:M_.orig_endo_nbr - fprintf('%s \t\t %g\n',M_.endo_names(i,:),steady_state(i)); + fprintf('%s \t\t %g\n', M_.endo_names{i}, steady_state(i)); end end print_info(info,options_.noprint, options_); diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m index 67dcf2a85..4824229c3 100644 --- a/matlab/stoch_simul.m +++ b/matlab/stoch_simul.m @@ -1,6 +1,6 @@ function info=stoch_simul(var_list) -% Copyright (C) 2001-2017 Dynare Team +% Copyright (C) 2001-2018 Dynare Team % % This file is part of Dynare. % @@ -57,12 +57,12 @@ end TeX = options_.TeX; -if size(var_list,1) == 0 - var_list = M_.endo_names(1:M_.orig_endo_nbr, :); +if isempty(var_list) + var_list = M_.endo_names(1:M_.orig_endo_nbr); end -[i_var,nvar,index_uniques] = varlist_indices(var_list,M_.endo_names); -var_list=var_list(index_uniques,:); +[i_var, nvar, index_uniques] = varlist_indices(var_list, M_.endo_names); +var_list=var_list(index_uniques); iter_ = max(options_.periods,1); if M_.exo_nbr > 0 @@ -111,27 +111,27 @@ if ~options_.noprint disp([' Number of jumpers: ' int2str(M_.nsfwrd)]) disp([' Number of static variables: ' int2str(M_.nstatic)]) my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS'; - labels = deblank(M_.exo_names); - headers = char('Variables',labels); - lh = size(labels,2)+2; - dyntable(options_,my_title,headers,labels,M_.Sigma_e,lh,10,6); + labels = M_.exo_names; + headers = vertcat('Variables', labels); + lh = cellofchararraymaxlength(labels)+2; + dyntable(options_, my_title, headers, labels, M_.Sigma_e, lh, 10, 6); if options_.TeX - labels = deblank(M_.exo_names_tex); - headers = char('Variables',labels); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,my_title,'covar_ex_shocks',headers,labels,M_.Sigma_e,lh,10,6); + labels = M_.exo_names_tex; + headers = vertcat('Variables', labels); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, my_title, 'covar_ex_shocks', headers, labels, M_.Sigma_e, lh, 10, 6); end if ~all(M_.H==0) my_title='MATRIX OF COVARIANCE OF MEASUREMENT ERRORS'; - labels = [repmat('SE_',length(options_.varobs),1),char(options_.varobs')]; - headers = char('Variables',labels); - lh = size(labels,2)+2; - dyntable(options_,my_title,headers,labels,M_.H,lh,10,6); + labels = cellfun(@(x) horzcat('SE_', x), options_.varobs, 'UniformOutput', false); + headers = vertcat('Variables', labels); + lh = cellofchararraymaxlength(labels)+2; + dyntable(options_, my_title, headers, labels, M_.H, lh, 10, 6); if options_.TeX - labels = deblank(M_.exo_names_tex); - headers = char('Variables',labels); - lh = size(labels,2)+2; - dyn_latex_table(M_,options_,my_title,'covar_ME',headers,labels,M_.H,lh,10,6); + labels = M_.exo_names_tex; + headers = vertcat('Variables', labels); + lh = cellofchararraymaxlength(labels)+2; + dyn_latex_table(M_, options_, my_title, 'covar_ME', headers, labels, M_.H, lh, 10, 6); end end if options_.partial_information @@ -140,15 +140,15 @@ if ~options_.noprint skipline() if isfield(options_,'varobs')&& ~isempty(options_.varobs) - PCL_varobs=char(options_.varobs); + PCL_varobs = options_.varobs; disp('OBSERVED VARIABLES') else - PCL_varobs=M_.endo_names; + PCL_varobs = M_.endo_names; disp(' VAROBS LIST NOT SPECIFIED') disp(' ASSUMED OBSERVED VARIABLES') end - for i=1:size(PCL_varobs,1) - disp([' ' PCL_varobs(i,:)]) + for i=1:length(PCL_varobs) + disp([' ' PCL_varobs{i}]) end end skipline() @@ -184,7 +184,7 @@ end if options_.nomoments == 0 if PI_PCL_solver - PCL_Part_info_moments (0, PCL_varobs, oo_.dr, i_var); + PCL_Part_info_moments(0, PCL_varobs, oo_.dr, i_var); elseif options_.periods == 0 % There is no code for theoretical moments at 3rd order if options_.order <= 2 @@ -197,7 +197,7 @@ end if options_.irf - var_listTeX = M_.endo_names_tex(i_var,:); + var_listTeX = M_.endo_names_tex(i_var); if TeX && any(strcmp('eps',cellstr(options_.graph_format))) fidTeX = fopen([M_.fname '_IRF.tex'],'w'); @@ -207,9 +207,9 @@ if options_.irf end SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord)=M_.Sigma_e+1e-14*eye(M_.exo_nbr); cs = transpose(chol(SS)); - tit(M_.exo_names_orig_ord,:) = M_.exo_names; + tit(M_.exo_names_orig_ord) = M_.exo_names; if TeX - titTeX(M_.exo_names_orig_ord,:) = M_.exo_names_tex; + titTeX(M_.exo_names_orig_ord) = M_.exo_names_tex; end irf_shocks_indx = getIrfShocksIndx(); for i=irf_shocks_indx @@ -226,7 +226,7 @@ if options_.irf end end if ~options_.noprint && any(any(isnan(y))) && ~options_.pruning && ~(options_.order==1) - fprintf('\nstoch_simul:: The simulations conducted for generating IRFs to %s were explosive.\n',M_.exo_names(i,:)) + fprintf('\nstoch_simul:: The simulations conducted for generating IRFs to %s were explosive.\n', M_.exo_names{i}) fprintf('stoch_simul:: No IRFs will be displayed. Either reduce the shock size, \n') fprintf('stoch_simul:: use pruning, or set the approximation order to 1.'); skipline(2); @@ -242,27 +242,27 @@ if options_.irf mylistTeX = []; end for j = 1:nvar - assignin('base',[deblank(M_.endo_names(i_var(j),:)) '_' deblank(M_.exo_names(i,:))],... + assignin('base',[M_.endo_names{i_var(j)} '_' M_.exo_names{i}],... y(i_var(j),:)'); - eval(['oo_.irfs.' deblank(M_.endo_names(i_var(j),:)) '_' ... - deblank(M_.exo_names(i,:)) ' = y(i_var(j),:);']); + eval(['oo_.irfs.' M_.endo_names{i_var(j)} '_' ... + M_.exo_names{i} ' = y(i_var(j),:);']); if max(abs(y(i_var(j),:))) >= options_.impulse_responses.plot_threshold irfs = cat(1,irfs,y(i_var(j),:)); if isempty(mylist) - mylist = deblank(var_list(j,:)); + mylist = var_list{j}; else - mylist = char(mylist,deblank(var_list(j,:))); + mylist = char(mylist, var_list{j}); end if TeX if isempty(mylistTeX) - mylistTeX = deblank(var_listTeX(j,:)); + mylistTeX = var_listTeX{j}; else - mylistTeX = char(mylistTeX,deblank(var_listTeX(j,:))); + mylistTeX = char(mylistTeX, var_listTeX{j}); end end else if options_.debug - fprintf('stoch_simul:: The IRF of %s to %s is smaller than the irf_plot_threshold of %4.3f and will not be displayed.\n',deblank(M_.endo_names(i_var(j),:)),deblank(M_.exo_names(i,:)),options_.impulse_responses.plot_threshold) + fprintf('stoch_simul:: The IRF of %s to %s is smaller than the irf_plot_threshold of %4.3f and will not be displayed.\n',M_.endo_names{i_var(j)},M_.exo_names{i},options_.impulse_responses.plot_threshold) end end end @@ -273,10 +273,10 @@ if options_.irf elseif nbplt == 1 if options_.relative_irf hh = dyn_figure(options_.nodisplay,'Name',['Relative response to' ... - ' orthogonalized shock to ' tit(i,:)]); + ' orthogonalized shock to ' tit{i}]); else hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to' ... - ' ' tit(i,:)]); + ' ' tit{i}]); end for j = 1:number_of_plots_to_draw subplot(nr,nc,j); @@ -288,16 +288,16 @@ if options_.irf remove_fractional_xticks; title(deblank(mylist(j,:)),'Interpreter','none'); end - dyn_saveas(hh,[M_.fname '_IRF_' deblank(tit(i,:))],options_.nodisplay,options_.graph_format); + dyn_saveas(hh,[M_.fname '_IRF_' tit{i}],options_.nodisplay,options_.graph_format); if TeX && any(strcmp('eps',cellstr(options_.graph_format))) fprintf(fidTeX,'\\begin{figure}[H]\n'); for j = 1:number_of_plots_to_draw fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{$%s$}\n'],deblank(mylist(j,:)),deblank(mylistTeX(j,:))); end fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s_IRF_%s}\n',options_.figures.textwidth*min(j/nc,1),M_.fname,deblank(tit(i,:))); - fprintf(fidTeX,'\\caption{Impulse response functions (orthogonalized shock to $%s$).}\n',titTeX(i,:)); - fprintf(fidTeX,'\\label{Fig:IRF:%s}\n',deblank(tit(i,:))); + fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s_IRF_%s}\n',options_.figures.textwidth*min(j/nc,1),M_.fname,tit{i}); + fprintf(fidTeX,'\\caption{Impulse response functions (orthogonalized shock to $%s$).}\n',titTeX{i}); + fprintf(fidTeX,'\\label{Fig:IRF:%s}\n', tit{i}); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); end @@ -305,9 +305,9 @@ if options_.irf for fig = 1:nbplt-1 if options_.relative_irf hh = dyn_figure(options_.nodisplay,'Name',['Relative response to orthogonalized shock' ... - ' to ' tit(i,:) ' figure ' int2str(fig)]); + ' to ' tit{i} ' figure ' int2str(fig)]); else - hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to ' tit(i,:) ... + hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to ' tit{i} ... ' figure ' int2str(fig)]); end for plt = 1:nstar @@ -320,27 +320,25 @@ if options_.irf remove_fractional_xticks title(deblank(mylist((fig-1)*nstar+plt,:)),'Interpreter','none'); end - dyn_saveas(hh,[ M_.fname '_IRF_' deblank(tit(i,:)) int2str(fig)],options_.nodisplay,options_.graph_format); + dyn_saveas(hh,[ M_.fname '_IRF_' tit{i} int2str(fig)],options_.nodisplay,options_.graph_format); if TeX && any(strcmp('eps',cellstr(options_.graph_format))) fprintf(fidTeX,'\\begin{figure}[H]\n'); for j = 1:nstar fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{$%s$}\n'],deblank(mylist((fig-1)*nstar+j,:)),deblank(mylistTeX((fig-1)*nstar+j,:))); end fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s_IRF_%s%s}\n',options_.figures.textwidth*min(plt/nc,1),M_.fname,deblank(tit(i,:)),int2str(fig)); + fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s_IRF_%s%s}\n',options_.figures.textwidth*min(plt/nc,1),M_.fname,tit{i},int2str(fig)); if options_.relative_irf - fprintf(fidTeX,['\\caption{Relative impulse response' ... - ' functions (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:))); + fprintf(fidTeX,['\\caption{Relative impulse response functions (orthogonalized shock to $%s$).}'], titTeX{i}); else - fprintf(fidTeX,['\\caption{Impulse response functions' ... - ' (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:))); + fprintf(fidTeX,['\\caption{Impulse response functions (orthogonalized shock to $%s$).}'], titTeX{i}); end - fprintf(fidTeX,'\\label{Fig:IRF:%s:%s}\n',deblank(tit(i,:)),int2str(fig)); + fprintf(fidTeX,'\\label{Fig:IRF:%s:%s}\n', tit{i},int2str(fig)); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); end end - hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to ' tit(i,:) ' figure ' int2str(nbplt) '.']); + hh = dyn_figure(options_.nodisplay,'Name',['Orthogonalized shock to ' tit{i} ' figure ' int2str(nbplt) '.']); m = 0; for plt = 1:number_of_plots_to_draw-(nbplt-1)*nstar m = m+1; @@ -353,22 +351,20 @@ if options_.irf remove_fractional_xticks title(deblank(mylist((nbplt-1)*nstar+plt,:)),'Interpreter','none'); end - dyn_saveas(hh,[ M_.fname '_IRF_' deblank(tit(i,:)) int2str(nbplt) ],options_.nodisplay,options_.graph_format); + dyn_saveas(hh,[ M_.fname '_IRF_' tit{i} int2str(nbplt) ],options_.nodisplay,options_.graph_format); if TeX && any(strcmp('eps',cellstr(options_.graph_format))) fprintf(fidTeX,'\\begin{figure}[H]\n'); for j = 1:m fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{$%s$}\n'],deblank(mylist((nbplt-1)*nstar+j,:)),deblank(mylistTeX((nbplt-1)*nstar+j,:))); end fprintf(fidTeX,'\\centering \n'); - fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s_IRF_%s%s}\n',options_.figures.textwidth*min(m/lc,1),M_.fname,deblank(tit(i,:)),int2str(nbplt)); + fprintf(fidTeX,'\\includegraphics[width=%2.2f\\textwidth]{%s_IRF_%s%s}\n',options_.figures.textwidth*min(m/lc,1),M_.fname,tit{i},int2str(nbplt)); if options_.relative_irf - fprintf(fidTeX,['\\caption{Relative impulse response functions' ... - ' (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:))); + fprintf(fidTeX,['\\caption{Relative impulse response functions (orthogonalized shock to $%s$).}'], titTeX{i}); else - fprintf(fidTeX,['\\caption{Impulse response functions' ... - ' (orthogonalized shock to $%s$).}'],deblank(titTeX(i,:))); + fprintf(fidTeX,['\\caption{Impulse response functions (orthogonalized shock to $%s$).}'], titTeX{i}); end - fprintf(fidTeX,'\\label{Fig:IRF:%s:%s}\n',deblank(tit(i,:)),int2str(nbplt)); + fprintf(fidTeX,'\\label{Fig:IRF:%s:%s}\n', tit{i},int2str(nbplt)); fprintf(fidTeX,'\\end{figure}\n'); fprintf(fidTeX,' \n'); end diff --git a/matlab/store_smoother_results.m b/matlab/store_smoother_results.m index 5ef6e1509..3688dd13f 100644 --- a/matlab/store_smoother_results.m +++ b/matlab/store_smoother_results.m @@ -54,7 +54,7 @@ function [oo_, yf]=store_smoother_results(M_,oo_,options_,bayestopt_,dataset_,da % First all smoothed variables are saved without trend and constant. % Then trend and constant are added for the observed variables. % -% Copyright (C) 2014-2017 Dynare Team +% Copyright (C) 2014-2018 Dynare Team % % This file is part of Dynare. % @@ -91,12 +91,12 @@ oo_.Smoother.TrendCoeffs(options_.varobs_id)=trend_coeff; %are in order of optio if ~isempty(Trend) for var_iter=1:M_.endo_nbr - if isempty(strmatch(deblank(M_.endo_names(var_iter,:)),options_.varobs,'exact')) - oo_.Smoother.Trend.(deblank(M_.endo_names(var_iter,:))) = zeros(gend,1); + if isempty(strmatch(M_.endo_names{var_iter}, options_.varobs, 'exact')) + oo_.Smoother.Trend.(M_.endo_names{var_iter}) = zeros(gend,1); end end - for var_iter=1:size(options_.varobs,2) - oo_.Smoother.Trend.(deblank(options_.varobs{1,var_iter})) = Trend(var_iter,:)'; + for var_iter=1:length(options_.varobs) + oo_.Smoother.Trend.(options_.varobs{var_iter}) = Trend(var_iter,:)'; end end %% Compute constant for observables @@ -160,22 +160,22 @@ for i_endo_in_bayestopt_smoother_varlist=bayestopt_.smoother_saved_var_list' elseif options_.loglinear == 0 %unlogged steady state must be used constant_current_variable=repmat((ys(i_endo_declaration_order)),gend,1); end - oo_.Smoother.Constant.(deblank(M_.endo_names(i_endo_declaration_order,:)))=constant_current_variable; - oo_.SmoothedVariables.(deblank(M_.endo_names(i_endo_declaration_order,:)))=atT(i_endo_in_dr,:)'+constant_current_variable; + oo_.Smoother.Constant.(M_.endo_names{i_endo_declaration_order})=constant_current_variable; + oo_.SmoothedVariables.(M_.endo_names{i_endo_declaration_order})=atT(i_endo_in_dr,:)'+constant_current_variable; if ~isempty(options_.nk) && options_.nk > 0 % && ~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.pshape> 0) && options_.load_mh_file)) - oo_.FilteredVariables.(deblank(M_.endo_names(i_endo_declaration_order,:)))=squeeze(aK(1,i_endo_in_dr,2:end-(options_.nk-1)))+constant_current_variable; + oo_.FilteredVariables.(M_.endo_names{i_endo_declaration_order})=squeeze(aK(1,i_endo_in_dr,2:end-(options_.nk-1)))+constant_current_variable; end - oo_.UpdatedVariables.(deblank(M_.endo_names(i_endo_declaration_order,:)))=updated_variables(i_endo_in_dr,:)'+constant_current_variable; + oo_.UpdatedVariables.(M_.endo_names{i_endo_declaration_order})=updated_variables(i_endo_in_dr,:)'+constant_current_variable; end %% Add trend and constant for observed variables for pos_iter=1:length(bayestopt_.mf) - oo_.Smoother.Constant.(deblank(M_.endo_names(bayestopt_.mfys(pos_iter),:)))=constant_part(pos_iter,:)'; + oo_.Smoother.Constant.(M_.endo_names{bayestopt_.mfys(pos_iter)})=constant_part(pos_iter,:)'; if ismember(bayestopt_.mf(pos_iter),bayestopt_.smoother_var_list(bayestopt_.smoother_saved_var_list)) - oo_.SmoothedVariables.(deblank(M_.endo_names(bayestopt_.mfys(pos_iter),:)))=yf(pos_iter,:)'; + oo_.SmoothedVariables.(M_.endo_names{bayestopt_.mfys(pos_iter)})=yf(pos_iter,:)'; if ~isempty(options_.nk) && options_.nk > 0 %filtered variable E_t(y_t+1) requires to shift trend by 1 period - oo_.FilteredVariables.(deblank(M_.endo_names(bayestopt_.mfys(pos_iter),:)))=... + oo_.FilteredVariables.(M_.endo_names{bayestopt_.mfys(pos_iter)})=... squeeze(aK(1,bayestopt_.mf(pos_iter),2:end-(options_.nk-1)))... +trend_constant_observables_filtered.filter_ahead_1(pos_iter,:)'; for filter_iter=1:length(options_.filter_step_ahead) @@ -186,7 +186,7 @@ for pos_iter=1:length(bayestopt_.mf) end end %updated variables are E_t(y_t) so no trend shift is required - oo_.UpdatedVariables.(deblank(M_.endo_names(bayestopt_.mfys(pos_iter),:)))=... + oo_.UpdatedVariables.(M_.endo_names{bayestopt_.mfys(pos_iter)})=... updated_variables(bayestopt_.mf(pos_iter),:)'+trend_constant_observables(pos_iter,:)'; end end @@ -224,7 +224,7 @@ end %% get smoothed shocks for exo_iter=1:M_.exo_nbr - oo_.SmoothedShocks.(deblank(M_.exo_names(exo_iter,:)))=innov(exo_iter,:)'; + oo_.SmoothedShocks.(M_.exo_names{exo_iter})=innov(exo_iter,:)'; end %% Smoothed measurement errors diff --git a/matlab/subset.m b/matlab/subset.m index 946ebdcc5..f58eba16b 100644 --- a/matlab/subset.m +++ b/matlab/subset.m @@ -1,6 +1,6 @@ function jndx = subset() -% Copyright (C) 2006-2017 Dynare Team +% Copyright (C) 2006-2018 Dynare Team % % This file is part of Dynare. % @@ -77,7 +77,7 @@ else tt = [tt;tmp]; end else% Excluded parameters are deep parameters... - tmp = strmatch(ExcludedParamNames{i},M_.param_names(estim_params_.param_vals(:,1),:),'exact'); + tmp = strmatch(ExcludedParamNames{i}, M_.param_names(estim_params_.param_vals(:,1)),'exact'); if ~isempty(tmp) tt = [tt;nvx+nvn+ncx+ncn+tmp]; else diff --git a/matlab/test_for_deep_parameters_calibration.m b/matlab/test_for_deep_parameters_calibration.m index 3cdc831b9..7949646ce 100644 --- a/matlab/test_for_deep_parameters_calibration.m +++ b/matlab/test_for_deep_parameters_calibration.m @@ -13,7 +13,7 @@ function info=test_for_deep_parameters_calibration(M_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -35,9 +35,9 @@ if ~isempty(plist) message = ['Some of the parameters have no value (' ]; for i=1:size(plist,1) if i1 diff --git a/matlab/varlist_indices.m b/matlab/varlist_indices.m index 4347f9af4..91b2f6e69 100644 --- a/matlab/varlist_indices.m +++ b/matlab/varlist_indices.m @@ -1,20 +1,20 @@ -function [i_var,nvar,index_uniques] = varlist_indices(sublist,list) -% function [i_var,nvar,index_uniques] = varlist_indices(sublist,list) +function [i_var, nvar, index_uniques] = varlist_indices(sublist, list) + % returns the indices of a list of endogenous variables % % INPUT -% sublist: sublist of variables -% list: list of variables +% sublist [cell of char arrays] sublist of variables +% list [cell of char arrays] list of variables % % OUTPUT -% i_var: variable indices in M_.endo_names -% nvar: number of variables in varlist -% index_uniqes: indices of unique elements in varlist +% i_var variable indices in M_.endo_names +% nvar number of variables in varlist +% index_uniques indices of unique elements in varlist % % SPECIAL REQUIREMENTS % none -% Copyright (C) 2010-2017 Dynare Team +% Copyright (C) 2010-2018 Dynare Team % % This file is part of Dynare. % @@ -31,49 +31,34 @@ function [i_var,nvar,index_uniques] = varlist_indices(sublist,list) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -% In Octave, ismember() doesn't operate on character arrays -if ~isoctave - if isempty(sublist) - check = []; - i_var = []; - else - [check,i_var] = ismember(sublist,list,'rows'); - end -else +if isempty(sublist) check = []; i_var = []; - for i = 1:rows(sublist) - tmp = strmatch(deblank(sublist(i,:)), list, 'exact'); - if isempty(tmp) - check = [ check; 0 ]; - else - check = [ check; 1 ]; - i_var = [ i_var; tmp ]; - end - end +else + [check, i_var] = ismember(sublist, list); end if ~all(check) k = find(~check); - tempstring = 'The following symbols are not endogenous variables: '; + str = 'The following symbols are not endogenous variables:'; for ii = 1:length(k) - tempstring = [ tempstring, deblank(sublist(k(ii),:)), ' ' ]; + str = sprintf('%s %s', str, sublist{k(ii)}); end - error(tempstring) + error(str) end nvar = length(i_var); -[i_var_unique,index_uniques,junk] = unique(i_var,'first'); -index_uniques =sort(index_uniques); -i_var_unique =i_var(index_uniques); +[i_var_unique, index_uniques, junk] = unique(i_var, 'first'); +index_uniques = sort(index_uniques); +i_var_unique = i_var(index_uniques); if length(i_var_unique)~=nvar k = find(~ismember(1:nvar,index_uniques)); - tempstring = 'The following symbols are specified twice in the variable list and are considered only once: '; + str = 'The following symbols are specified twice in the variable list and are considered only once:'; for ii = 1:length(k) - tempstring = [ tempstring, deblank(sublist(k(ii),:)), ' ' ]; + str = sprintf('%s %s', str, sublist{k(ii)}); end - warning('%s\n',tempstring) - i_var=i_var_unique; + warning('%s\n', str) + i_var = i_var_unique; nvar = length(i_var); -end +end \ No newline at end of file diff --git a/matlab/write_latex_definitions.m b/matlab/write_latex_definitions.m index e9345ac6a..30e96506f 100644 --- a/matlab/write_latex_definitions.m +++ b/matlab/write_latex_definitions.m @@ -12,7 +12,7 @@ function write_latex_definitions % SPECIAL REQUIREMENTS % none -% Copyright (C) 2013-2017 Dynare Team +% Copyright (C) 2013-2018 Dynare Team % % This file is part of Dynare. % @@ -65,9 +65,9 @@ for i=1:length(tables) long = eval([M_var_root{i} '_names_long']); for j=1:size(names,1) fprintf(fid, '\\texttt{%s} & $%s$ & %s\\\\\n', ... - regexprep(strtrim(names(j,:)), '_', '\\_'), ... - strtrim(tex(j,:)), ... - regexprep(strtrim(long(j,:)), '_', '\\_')); + regexprep(names{j}, '_', '\\_'), ... + tex{j}, ... + regexprep(long{j}, '_', '\\_')); end fprintf(fid, '\\hline%%\n'); fprintf(fid, '\\end{longtable}\n'); diff --git a/matlab/write_latex_parameter_table.m b/matlab/write_latex_parameter_table.m index 92374d77c..7d76880ff 100644 --- a/matlab/write_latex_parameter_table.m +++ b/matlab/write_latex_parameter_table.m @@ -12,7 +12,7 @@ function write_latex_parameter_table % SPECIAL REQUIREMENTS % none -% Copyright (C) 2015-2017 Dynare Team +% Copyright (C) 2015-2018 Dynare Team % % This file is part of Dynare. % @@ -31,11 +31,12 @@ function write_latex_parameter_table global M_ -if ~isequal(M_.param_names,M_.param_names_long) - Long_names_present=1; -else - Long_names_present=0; +Long_names_present = false; + +if ~isequal(M_.param_names, M_.param_names_long) + Long_names_present = true; end + fid = fopen([M_.fname '_latex_parameters.tex'], 'w'); fprintf(fid, '\\begin{center}\n'); if Long_names_present==1 @@ -74,20 +75,18 @@ fprintf(fid, '\\endhead\n'); tex = M_.param_names_tex; long = M_.param_names_long; -for j=1:size(tex,1) - if Long_names_present==1 + +for j=1:length(tex) + if Long_names_present % replace underscores - long_names_temp=regexprep(strtrim(long(j,:)), '_', '\\_'); + long_names_temp = regexprep(long{j}, '_', '\\_'); % replace percent - long_names_temp=regexprep(long_names_temp, '%', '\\%'); + long_names_temp = regexprep(long_names_temp, '%', '\\%'); fprintf(fid, '$%s$ \t & \t %4.3f \t & \t %s\\\\\n', ... - strtrim(tex(j,:)), ... - M_.params(j,:),... - long_names_temp); + tex{j}, M_.params(j), long_names_temp); else fprintf(fid, '$%s$ \t & \t %4.3f \\\\\n', ... - strtrim(tex(j,:)), ... - M_.params(j,:)); + tex{j}, M_.params(j)); end end fprintf(fid, '\\bottomrule%%\n'); diff --git a/matlab/writedata.m b/matlab/writedata.m index c714728fc..759b01182 100644 --- a/matlab/writedata.m +++ b/matlab/writedata.m @@ -10,7 +10,7 @@ function writedata(fname) % SPECIAL REQUIREMENT % none -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -36,7 +36,7 @@ end S=[fname '_endo.xls']; n=size(oo_.endo_simul,2); delete(S); -S=upper(cellstr(M_.endo_names)); +S=upper(M_.endo_names); S1=cellstr([num2str((1:n)') char(65*ones(1,n))']); xlswrite([fname '_endo'], S', 'endogenous', 'B1'); xlswrite([fname '_endo'], S1, 'endogenous', 'A2'); @@ -44,7 +44,7 @@ xlswrite([fname '_endo'], oo_.endo_simul', 'endogenous', 'B2'); S=[fname '_exo.xls']; n=size(oo_.exo_simul,1); delete(S); -S=upper(cellstr(M_.exo_names)); +S=upper(M_.exo_names); S1=cellstr([num2str((1:n)') char(65*ones(1,n))']); xlswrite([fname '_exo'], S','exogenous', 'B1'); xlswrite([fname '_exo'], S1, 'exogenous', 'A2'); diff --git a/matlab/writedata_text.m b/matlab/writedata_text.m index 0fa0f7ac2..293bdee87 100644 --- a/matlab/writedata_text.m +++ b/matlab/writedata_text.m @@ -10,7 +10,7 @@ function writedata_text(fname) % SPECIAL REQUIREMENT % none -% Copyright (C) 2007-2017 Dynare Team +% Copyright (C) 2007-2018 Dynare Team % % This file is part of Dynare. % @@ -30,8 +30,8 @@ function writedata_text(fname) global M_ oo_ S=[fname '_endo.dat']; fid = fopen(S,'w'); -for i = 1:size(M_.endo_names,1) - fprintf(fid,'%s ',M_.endo_names(i,:)'); +for i = 1:M_.endo_nbr + fprintf(fid,'%s ', M_.endo_names{i}); end fprintf(fid,'\n'); for i = 1:size(oo_.endo_simul,2) @@ -42,8 +42,8 @@ fclose(fid); S=[fname '_exo.dat']; fid = fopen(S,'w'); -for i = 1:size(M_.exo_names,1) - fprintf(fid,'%s ',M_.exo_names(i,:)); +for i = 1:M_.exo_nbr + fprintf(fid,'%s ',M_.exo_names{i}); end fprintf(fid,'\n'); for i = 1:size(oo_.exo_simul,1) diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc index 5e8c9b63f..9e0b157b1 100644 --- a/preprocessor/ComputingTasks.cc +++ b/preprocessor/ComputingTasks.cc @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2017 Dynare Team + * Copyright (C) 2003-2018 Dynare Team * * This file is part of Dynare. * @@ -589,15 +589,15 @@ RamseyPolicyStatement::writeOutput(ostream &output, const string &basename, bool output << "options_.k_order_solver = 1;" << endl; options_list.writeOutput(output); - output << "var_list_ = char("; + output << "var_list_ = {"; for (vector::const_iterator it = ramsey_policy_list.begin(); it != ramsey_policy_list.end(); ++it) { if (it != ramsey_policy_list.begin()) - output << ","; + output << ";"; output << "'" << *it << "'"; } - output << ");" << endl + output << "};" << endl << "ramsey_policy(var_list_);" << endl; } diff --git a/preprocessor/SymbolList.cc b/preprocessor/SymbolList.cc index d729f447d..5d7efd4f3 100644 --- a/preprocessor/SymbolList.cc +++ b/preprocessor/SymbolList.cc @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2017 Dynare Team + * Copyright (C) 2003-2018 Dynare Team * * This file is part of Dynare. * @@ -28,15 +28,15 @@ SymbolList::addSymbol(const string &symbol) void SymbolList::writeOutput(const string &varname, ostream &output) const { - output << varname << " = char("; + output << varname << " = {"; for (vector::const_iterator it = symbols.begin(); it != symbols.end(); ++it) { if (it != symbols.begin()) - output << ","; + output << ";"; output << "'" << *it << "'"; } - output << ");" << endl; + output << "};" << endl; } void diff --git a/preprocessor/SymbolTable.cc b/preprocessor/SymbolTable.cc index 3d035b09e..5b71e5e12 100644 --- a/preprocessor/SymbolTable.cc +++ b/preprocessor/SymbolTable.cc @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2017 Dynare Team + * Copyright (C) 2003-2018 Dynare Team * * This file is part of Dynare. * @@ -219,14 +219,13 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException) if (exo_nbr() > 0) { - output << "M_.exo_names = '" << getName(exo_ids[0]) << "';" << endl; - output << "M_.exo_names_tex = '" << getTeXName(exo_ids[0]) << "';" << endl; - output << "M_.exo_names_long = '" << getLongName(exo_ids[0]) << "';" << endl; - for (int id = 1; id < exo_nbr(); id++) - output << "M_.exo_names = char(M_.exo_names, '" << getName(exo_ids[id]) << "');" << endl - << "M_.exo_names_tex = char(M_.exo_names_tex, '" << getTeXName(exo_ids[id]) << "');" << endl - << "M_.exo_names_long = char(M_.exo_names_long, '" << getLongName(exo_ids[id]) << "');" << endl; - + output << "M_.exo_names = cell(" << exo_nbr() << ",1);" << endl; + output << "M_.exo_names_tex = cell(" << exo_nbr() << ",1);" << endl; + output << "M_.exo_names_long = cell(" << exo_nbr() << ",1);" << endl; + for (int id = 0; id < exo_nbr(); id++) + output << "M_.exo_names(" << id+1 << ") = {'" << getName(exo_ids[id]) << "'};" << endl + << "M_.exo_names_tex(" << id+1 << ") = {'" << getTeXName(exo_ids[id]) << "'};" << endl + << "M_.exo_names_long(" << id+1 << ") = {'" << getLongName(exo_ids[id]) << "'};" << endl; map > partitions = getPartitionsForType(eExogenous); for (map >::const_iterator it = partitions.begin(); it != partitions.end(); it++) @@ -248,14 +247,13 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException) if (exo_det_nbr() > 0) { - output << "M_.exo_det_names = '" << getName(exo_det_ids[0]) << "';" << endl; - output << "M_.exo_det_names_tex = '" << getTeXName(exo_det_ids[0]) << "';" << endl; - output << "M_.exo_det_names_long = '" << getLongName(exo_det_ids[0]) << "';" << endl; - for (int id = 1; id < exo_det_nbr(); id++) - output << "M_.exo_det_names = char(M_.exo_det_names, '" << getName(exo_det_ids[id]) << "');" << endl - << "M_.exo_det_names_tex = char(M_.exo_det_names_tex, '" << getTeXName(exo_det_ids[id]) << "');" << endl - << "M_.exo_det_names_long = char(M_.exo_det_names_long, '" << getLongName(exo_det_ids[id]) << "');" << endl; - + output << "M_.exo_det_names = cell(" << exo_det_nbr() << ",1);" << endl; + output << "M_.exo_det_names_tex = cell(" << exo_det_nbr() << ",1);" << endl; + output << "M_.exo_det_names_long = cell(" << exo_det_nbr() << ",1);" << endl; + for (int id = 0; id < exo_det_nbr(); id++) + output << "M_.exo_det_names(" << id+1 << ") = {'" << getName(exo_det_ids[id]) << "'};" << endl + << "M_.exo_det_names_tex(" << id+1 << ") = {'" << getTeXName(exo_det_ids[id]) << "'};" << endl + << "M_.exo_det_names_long(" << id+1 << ") = {'" << getLongName(exo_det_ids[id]) << "'};" << endl; output << "M_.exo_det_partitions = struct();" << endl; map > partitions = getPartitionsForType(eExogenousDet); for (map >::const_iterator it = partitions.begin(); @@ -278,14 +276,13 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException) if (endo_nbr() > 0) { - output << "M_.endo_names = '" << getName(endo_ids[0]) << "';" << endl; - output << "M_.endo_names_tex = '" << getTeXName(endo_ids[0]) << "';" << endl; - output << "M_.endo_names_long = '" << getLongName(endo_ids[0]) << "';" << endl; - for (int id = 1; id < endo_nbr(); id++) - output << "M_.endo_names = char(M_.endo_names, '" << getName(endo_ids[id]) << "');" << endl - << "M_.endo_names_tex = char(M_.endo_names_tex, '" << getTeXName(endo_ids[id]) << "');" << endl - << "M_.endo_names_long = char(M_.endo_names_long, '" << getLongName(endo_ids[id]) << "');" << endl; - + output << "M_.endo_names = cell(" << endo_nbr() << ",1);" << endl; + output << "M_.endo_names_tex = cell(" << endo_nbr() << ",1);" << endl; + output << "M_.endo_names_long = cell(" << endo_nbr() << ",1);" << endl; + for (int id = 0; id < endo_nbr(); id++) + output << "M_.endo_names(" << id+1 << ") = {'" << getName(endo_ids[id]) << "'};" << endl + << "M_.endo_names_tex(" << id+1 << ") = {'" << getTeXName(endo_ids[id]) << "'};" << endl + << "M_.endo_names_long(" << id+1 << ") = {'" << getLongName(endo_ids[id]) << "'};" << endl; output << "M_.endo_partitions = struct();" << endl; map > partitions = getPartitionsForType(eEndogenous); for (map >::const_iterator it = partitions.begin(); @@ -308,19 +305,17 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException) if (param_nbr() > 0) { - output << "M_.param_names = '" << getName(param_ids[0]) << "';" << endl; - output << "M_.param_names_tex = '" << getTeXName(param_ids[0]) << "';" << endl; - output << "M_.param_names_long = '" << getLongName(param_ids[0]) << "';" << endl; - for (int id = 1; id < param_nbr(); id++) + output << "M_.param_names = cell(" << param_nbr() << ",1);" << endl; + output << "M_.param_names_tex = cell(" << param_nbr() << ",1);" << endl; + output << "M_.param_names_long = cell(" << param_nbr() << ",1);" << endl; + for (int id = 0; id < param_nbr(); id++) { - output << "M_.param_names = char(M_.param_names, '" << getName(param_ids[id]) << "');" << endl - << "M_.param_names_tex = char(M_.param_names_tex, '" << getTeXName(param_ids[id]) << "');" << endl - << "M_.param_names_long = char(M_.param_names_long, '" << getLongName(param_ids[id]) << "');" << endl; - + output << "M_.param_names(" << id+1 << ") = {'" << getName(param_ids[id]) << "'};" << endl + << "M_.param_names_tex(" << id+1 << ") = {'" << getTeXName(param_ids[id]) << "'};" << endl + << "M_.param_names_long(" << id+1 << ") = {'" << getLongName(param_ids[id]) << "'};" << endl; if (getName(param_ids[id]) == "dsge_prior_weight") output << "options_.dsge_var = 1;" << endl; } - output << "M_.param_partitions = struct();" << endl; map > partitions = getPartitionsForType(eParameter); for (map >::const_iterator it = partitions.begin(); @@ -393,7 +388,7 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException) if (observedVariablesNbr() > 0) { int ic = 1; - output << "options_.varobs = cell(1);" << endl; + output << "options_.varobs = cell(" << observedVariablesNbr() << ", 1);" << endl; for (vector::const_iterator it = varobs.begin(); it != varobs.end(); it++, ic++) output << "options_.varobs(" << ic << ") = {'" << getName(*it) << "'};" << endl; diff --git a/tests/conditional_forecasts/5/fs2000_cal.mod b/tests/conditional_forecasts/5/fs2000_cal.mod index a835c403b..a171576c3 100644 --- a/tests/conditional_forecasts/5/fs2000_cal.mod +++ b/tests/conditional_forecasts/5/fs2000_cal.mod @@ -58,7 +58,7 @@ end; steady; -f = dseries(kron([oo_.steady_state; oo_.exo_steady_state],ones(1,34))',2012Q3:2020Q4,[cellstr(M_.endo_names) ; cellstr(M_.exo_names)]); +f = dseries(kron([oo_.steady_state; oo_.exo_steady_state],ones(1,34))',2012Q3:2020Q4,[M_.endo_names ; M_.exo_names]); f_r = f; diff --git a/tests/decision_rules/third_order/comparison_policy_functions_dynare_mathematica.m b/tests/decision_rules/third_order/comparison_policy_functions_dynare_mathematica.m index 729fd152f..4b4c0adde 100644 --- a/tests/decision_rules/third_order/comparison_policy_functions_dynare_mathematica.m +++ b/tests/decision_rules/third_order/comparison_policy_functions_dynare_mathematica.m @@ -17,7 +17,7 @@ state_vars=dr.order_var(klag(:,1)); %order of endogenous variables in FV et al. paper: c, invest, y, h, r, dp, kp, lambda, pi varlist_FV={'C';'I';'Y';'H';'r';'D';'K';'lambda';'phi'}; for ii=1: length(varlist_FV) - FV_endo_order(ii,1)=strmatch(varlist_FV{ii},M_.endo_names(dr.order_var,:),'exact'); + FV_endo_order(ii,1)=strmatch(varlist_FV{ii},M_.endo_names(dr.order_var),'exact'); end % order in states of FV et al. paper: @@ -30,7 +30,7 @@ end %followed by endogenous: sigmarlag sigmatblag erlag etblag glag investlag debt capital Lambda varlist_FV_endo_states={'sigma_r';'sigma_tb';'eps_r';'eps_tb';'X';'I';'D';'K'}; for ii=1: length(varlist_FV_endo_states) - FV_endo_state_order(ii)=strmatch(varlist_FV_endo_states{ii},M_.endo_names(state_vars,:),'exact'); + FV_endo_state_order(ii)=strmatch(varlist_FV_endo_states{ii},M_.endo_names(state_vars),'exact'); end %% First order diff --git a/tests/deterministic_simulations/multiple_lead_lags/sim_endo_lead_lag.mod b/tests/deterministic_simulations/multiple_lead_lags/sim_endo_lead_lag.mod index 490c2882c..bf21b6149 100644 --- a/tests/deterministic_simulations/multiple_lead_lags/sim_endo_lead_lag.mod +++ b/tests/deterministic_simulations/multiple_lead_lags/sim_endo_lead_lag.mod @@ -52,8 +52,8 @@ if max(abs(base_results.oo_.endo_simul(strmatch('c',base_results.M_.endo_names,' error('Autonomous system part is wrong') end -if max(abs(base_results.oo_.exo_simul(1:end-base_results.M_.maximum_lead-base_results.M_.maximum_lag,strmatch('x',base_results.M_.exo_names,'exact')) -... - oo_.exo_simul(1:end-M_.maximum_lead-M_.maximum_lag,strmatch('x',M_.exo_names,'exact'))))>1e-8 +if max(abs(base_results.oo_.exo_simul(1:end-base_results.M_.maximum_lead-base_results.M_.maximum_lag,strmatch('x', base_results.M_.exo_names, 'exact')) -... + oo_.exo_simul(1:end-M_.maximum_lead-M_.maximum_lag,strmatch('x', M_.exo_names, 'exact'))))>1e-8 error('Translation of exogenous variables is wrong') end diff --git a/tests/deterministic_simulations/multiple_lead_lags/sim_exo_lead_lag.mod b/tests/deterministic_simulations/multiple_lead_lags/sim_exo_lead_lag.mod index 0df5a01f1..1beb0d400 100644 --- a/tests/deterministic_simulations/multiple_lead_lags/sim_exo_lead_lag.mod +++ b/tests/deterministic_simulations/multiple_lead_lags/sim_exo_lead_lag.mod @@ -54,6 +54,6 @@ clear base_results base_results_aux_vars=load('sim_exo_lead_lag_aux_vars_results.mat'); if max(abs(base_results_aux_vars.oo_.endo_simul(strmatch('x_lag_3',base_results_aux_vars.M_.endo_names,'exact'),1:end-base_results_aux_vars.M_.maximum_lead-1)' -... - oo_.exo_simul(1:end-M_.maximum_lead-M_.maximum_lag,strmatch('x',M_.exo_names,'exact'))))>1e-8 + oo_.exo_simul(1:end-M_.maximum_lead-M_.maximum_lag,strmatch('x', M_.exo_names, 'exact'))))>1e-8 error('Translation of aux vars is wrong') end \ No newline at end of file diff --git a/tests/deterministic_simulations/multiple_lead_lags/sim_lead_lag.mod b/tests/deterministic_simulations/multiple_lead_lags/sim_lead_lag.mod index 406f66459..e068856ef 100644 --- a/tests/deterministic_simulations/multiple_lead_lags/sim_lead_lag.mod +++ b/tests/deterministic_simulations/multiple_lead_lags/sim_lead_lag.mod @@ -58,6 +58,6 @@ clear base_results base_results_aux_vars=load('sim_lead_lag_aux_vars_results.mat'); if max(abs(base_results_aux_vars.oo_.endo_simul(strmatch('x_lag_3',base_results_aux_vars.M_.endo_names,'exact'),1:end-base_results_aux_vars.M_.maximum_lead-1)' -... - oo_.exo_simul(1:end-M_.maximum_lead-M_.maximum_lag,strmatch('x',M_.exo_names,'exact'))))>1e-8 + oo_.exo_simul(1:end-M_.maximum_lead-M_.maximum_lag,strmatch('x', M_.exo_names, 'exact'))))>1e-8 error('Translation of aux vars is wrong') end \ No newline at end of file diff --git a/tests/ecb/backward-models/solow_forecast.mod b/tests/ecb/backward-models/solow_forecast.mod index 669e527c3..b76d5f2f2 100644 --- a/tests/ecb/backward-models/solow_forecast.mod +++ b/tests/ecb/backward-models/solow_forecast.mod @@ -53,7 +53,7 @@ end; oo__ = simul_backward_nonlinear_model([], 10, options_, M_, oo_); -initialcondition = dseries(transpose(oo__.endo_simul(:,10)), 2017Q1, cellstr(M_.endo_names)); +initialcondition = dseries(transpose(oo__.endo_simul(:,10)), 2017Q1, M_.endo_names); /* REMARKS diff --git a/tests/ecb/backward-models/solow_irf.mod b/tests/ecb/backward-models/solow_irf.mod index 0db1b5ab7..a4b36478d 100644 --- a/tests/ecb/backward-models/solow_irf.mod +++ b/tests/ecb/backward-models/solow_irf.mod @@ -46,7 +46,7 @@ end; */ // Define a dseries object. -ds = dseries(repmat([1, .5, 1, .5, 0, 1], 10, 1), 1990Q1, cellstr(M_.endo_names), cellstr(M_.endo_names_tex)); +ds = dseries(repmat([1, .5, 1, .5, 0, 1], 10, 1), 1990Q1, M_.endo_names, M_.endo_names_tex); // Alternatively we could build this object with a stochastic simulation of the model. //oo_ = simul_backward_model(rand(6,1), 10, options_, M_, oo_); diff --git a/tests/forecast/Hansen_exo_det_forecast.mod b/tests/forecast/Hansen_exo_det_forecast.mod index 22744908a..a8dd12e8d 100644 --- a/tests/forecast/Hansen_exo_det_forecast.mod +++ b/tests/forecast/Hansen_exo_det_forecast.mod @@ -82,8 +82,8 @@ forecast(periods=40); figure for ii=1:M_.orig_endo_nbr subplot(3,3,ii) - var_name=deblank(M_.endo_names(ii,:)); - var_index=strmatch(var_name,deblank(M_.endo_names),'exact'); + var_name=M_.endo_names{ii}; + var_index=strmatch(var_name, M_.endo_names,'exact'); plot(1:40,oo_.dr.ys(var_index)+oo_.irfs.([var_name,'_eps_a_antic']),'b',1:40,... % oo_.forecast.Mean.(var_name),'r--') title(var_name) diff --git a/tests/identification/as2007/as2007_steadystate.m b/tests/identification/as2007/as2007_steadystate.m index 473207a0b..f231e9786 100644 --- a/tests/identification/as2007/as2007_steadystate.m +++ b/tests/identification/as2007/as2007_steadystate.m @@ -2,12 +2,12 @@ function [ys,check1]=as2007_steadystate(ys,exo) global M_ -for j=1:size(M_.param_names,1) - eval([deblank(M_.param_names(j,:)),' = M_.params(j);']) - assignin('base',deblank(M_.param_names(j,:)),M_.params(j)); +for j=1:length(M_.param_names) + eval([M_.param_names{j},' = M_.params(j);']) + assignin('base', M_.param_names{j} , M_.params(j)); end -for j=1:size(M_.endo_names,1) - eval([deblank(M_.endo_names(j,:)),' = NaN;']) +for j=1:length(M_.endo_names) + eval([M_.endo_names{j},' = NaN;']) end check1=0; @@ -24,11 +24,11 @@ INT = pi_steady+rr_steady+4*gam_steady; %% end own model equations for iter = 1:length(M_.params) %update parameters set in the file - eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names(iter,:) ';' ]) + eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names{iter} ';' ]) end NumberOfEndogenousVariables = M_.orig_endo_nbr; %auxiliary variables are set automatically for ii = 1:NumberOfEndogenousVariables - varname = deblank(M_.endo_names(ii,:)); + varname = M_.endo_names{ii}; eval(['ys(' int2str(ii) ') = ' varname ';']); end diff --git a/tests/identification/kim/kim2_steadystate.m b/tests/identification/kim/kim2_steadystate.m index ffbd641ed..d0796adb1 100644 --- a/tests/identification/kim/kim2_steadystate.m +++ b/tests/identification/kim/kim2_steadystate.m @@ -2,12 +2,12 @@ function [ys,check1]=kim2_steadystate(ys,exo) global M_ -for j=1:size(M_.param_names,1) - eval([deblank(M_.param_names(j,:)),' = M_.params(j);']) - assignin('base',deblank(M_.param_names(j,:)),M_.params(j)); +for j=1:length(M_.param_names) + eval([M_.param_names{j}, ' = M_.params(j);']) + assignin('base', M_.param_names{j}, M_.params(j)); end -for j=1:size(M_.endo_names,1) - eval([deblank(M_.endo_names(j,:)),' = NaN;']) +for j=1:length(M_.endo_names) + eval([M_.endo_names{j}, ' = NaN;']) end check1=0; @@ -22,11 +22,11 @@ lam = (1-s)^theta/c^(1+theta)/(1+theta); %% end own model equations for iter = 1:length(M_.params) %update parameters set in the file - eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names(iter,:) ';' ]) + eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names{iter} ';' ]) end NumberOfEndogenousVariables = M_.orig_endo_nbr; %auxiliary variables are set automatically for ii = 1:NumberOfEndogenousVariables - varname = deblank(M_.endo_names(ii,:)); + varname = M_.endo_names{ii}; eval(['ys(' int2str(ii) ') = ' varname ';']); end diff --git a/tests/k_order_perturbation/fs2000k4.mod b/tests/k_order_perturbation/fs2000k4.mod index a97b91de3..a219af789 100644 --- a/tests/k_order_perturbation/fs2000k4.mod +++ b/tests/k_order_perturbation/fs2000k4.mod @@ -73,7 +73,7 @@ oo1 = load('fs2000k++'); kk=[]; for i=1:M_.orig_endo_nbr; - kk(i) = strmatch(deblank(M_.endo_names(oo_.dr.order_var(i),:)),oo1.dyn_vars,'exact'); + kk(i) = strmatch(M_.endo_names{oo_.dr.order_var(i)},oo1.dyn_vars,'exact'); end kk(17) = 17; diff --git a/tests/kalman/likelihood_from_dynare/fs2000_uncorr_ME.mod b/tests/kalman/likelihood_from_dynare/fs2000_uncorr_ME.mod index e721963a0..7376f42bb 100644 --- a/tests/kalman/likelihood_from_dynare/fs2000_uncorr_ME.mod +++ b/tests/kalman/likelihood_from_dynare/fs2000_uncorr_ME.mod @@ -5,17 +5,17 @@ temp=oo_.endo_simul; %add measurement error oo_.endo_simul(strmatch('gy_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('gy_obs',M_.endo_names,'exact'),:)+0.05*randn(1,size(oo_.endo_simul,2)); oo_.endo_simul(strmatch('gp_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('gp_obs',M_.endo_names,'exact'),:)+0.05*randn(1,size(oo_.endo_simul,2)); -datatomfile('fsdat_simul_uncorr_ME', char('gy_obs', 'gp_obs')); +datatomfile('fsdat_simul_uncorr_ME', {'gy_obs'; 'gp_obs'}); oo_.endo_simul(strmatch('gy_obs',M_.endo_names,'exact'),[7,199])=NaN; oo_.endo_simul(strmatch('gp_obs',M_.endo_names,'exact'),[151,199])=NaN; -datatomfile('fsdat_simul_uncorr_ME_missing', char('gy_obs', 'gp_obs')); +datatomfile('fsdat_simul_uncorr_ME_missing', {'gy_obs'; 'gp_obs'}); shock_mat=chol([1 0.5; 0.5 1])*0.05*randn(2,size(oo_.endo_simul,2)); oo_.endo_simul(strmatch('gy_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('gy_obs',M_.endo_names,'exact'),:)+shock_mat(1,:); oo_.endo_simul(strmatch('gp_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('gp_obs',M_.endo_names,'exact'),:)+shock_mat(2,:); -datatomfile('fsdat_simul_corr_ME', char('gy_obs', 'gp_obs')); +datatomfile('fsdat_simul_corr_ME', {'gy_obs'; 'gp_obs'}); oo_.endo_simul(strmatch('gy_obs',M_.endo_names,'exact'),[7,199])=NaN; oo_.endo_simul(strmatch('gp_obs',M_.endo_names,'exact'),[151,199])=NaN; -datatomfile('fsdat_simul_corr_ME_missing', char('gy_obs', 'gp_obs')); +datatomfile('fsdat_simul_corr_ME_missing', {'gy_obs'; 'gp_obs'}); estimated_params; alp, 0.356; diff --git a/tests/kalman/likelihood_from_dynare/fs2000ns_uncorr_ME.mod b/tests/kalman/likelihood_from_dynare/fs2000ns_uncorr_ME.mod index 1d1350842..b16a37dff 100644 --- a/tests/kalman/likelihood_from_dynare/fs2000ns_uncorr_ME.mod +++ b/tests/kalman/likelihood_from_dynare/fs2000ns_uncorr_ME.mod @@ -5,17 +5,17 @@ temp=oo_.endo_simul; %add measurement error oo_.endo_simul(strmatch('Y_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('Y_obs',M_.endo_names,'exact'),:)+0.05*randn(1,size(oo_.endo_simul,2)); oo_.endo_simul(strmatch('P_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('P_obs',M_.endo_names,'exact'),:)+0.05*randn(1,size(oo_.endo_simul,2)); -datatomfile('fs_ns_dat_simul_uncorr_ME', char('Y_obs', 'P_obs')); +datatomfile('fs_ns_dat_simul_uncorr_ME', {'Y_obs'; 'P_obs'}); oo_.endo_simul(strmatch('Y_obs',M_.endo_names,'exact'),[7,199])=NaN; oo_.endo_simul(strmatch('P_obs',M_.endo_names,'exact'),[151,199])=NaN; -datatomfile('fs_ns_dat_simul_uncorr_ME_missing', char('Y_obs', 'P_obs')); +datatomfile('fs_ns_dat_simul_uncorr_ME_missing', {'Y_obs'; 'P_obs'}); shock_mat=chol([1 0.5; 0.5 1])*0.05*randn(2,size(oo_.endo_simul,2)); oo_.endo_simul(strmatch('Y_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('Y_obs',M_.endo_names,'exact'),:)+shock_mat(1,:); oo_.endo_simul(strmatch('P_obs',M_.endo_names,'exact'),:)=oo_.endo_simul(strmatch('P_obs',M_.endo_names,'exact'),:)+shock_mat(2,:); -datatomfile('fs_ns_dat_simul_corr_ME', char('Y_obs', 'P_obs')); +datatomfile('fs_ns_dat_simul_corr_ME', {'Y_obs'; 'P_obs'}); oo_.endo_simul(strmatch('Y_obs',M_.endo_names,'exact'),[7,199])=NaN; oo_.endo_simul(strmatch('P_obs',M_.endo_names,'exact'),[151,199])=NaN; -datatomfile('fs_ns_dat_simul_corr_ME_missing', char('Y_obs', 'P_obs')); +datatomfile('fs_ns_dat_simul_corr_ME_missing', {'Y_obs'; 'P_obs'}); estimated_params; alp, 0.33; diff --git a/tests/kalman_filter_smoother/algo2.mod b/tests/kalman_filter_smoother/algo2.mod index b5dde589c..89bca7750 100644 --- a/tests/kalman_filter_smoother/algo2.mod +++ b/tests/kalman_filter_smoother/algo2.mod @@ -61,10 +61,10 @@ obj_exo = {'SmoothedShocks';}; nobj_endo = size(obj_endo,1); nobj_exo = size(obj_exo,1); for i=1:nobj_endo; - err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names(1,:) ',1);']),M_.endo_nbr); + err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names{1} ',1);']),M_.endo_nbr); for j=1:M_.endo_nbr; - var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names(j,:)]); - var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names(j,:)]); + var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names{j}]); + var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names{j}]); err_endo(:,j) = var1-var2; end; if max(max(abs(err_endo))) > 1e-10; @@ -75,10 +75,10 @@ end; err_exo = zeros(200,M_.exo_nbr,nobj_exo); for i=1:nobj_exo; - err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names(1,:)]),1),M_.exo_nbr); + err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names{1}]),1),M_.exo_nbr); for j=1:M_.exo_nbr; - var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names(j,:)]); - var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names(j,:)]); + var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names{j}]); + var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names{j}]); err_exo(:,j,i) = var1 - var2; end; if max(max(abs(err_exo))) > 1e-10; diff --git a/tests/kalman_filter_smoother/algo4.mod b/tests/kalman_filter_smoother/algo4.mod index e46b9b1b6..1d07bc93c 100644 --- a/tests/kalman_filter_smoother/algo4.mod +++ b/tests/kalman_filter_smoother/algo4.mod @@ -64,10 +64,10 @@ obj_exo = {'SmoothedShocks';}; nobj_endo = size(obj_endo,1); nobj_exo = size(obj_exo,1); for i=1:nobj_endo; - err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names(1,:) ',1);']),M_.endo_nbr); + err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names{1} ',1);']),M_.endo_nbr); for j=1:M_.endo_nbr; - var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names(j,:)]); - var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names(j,:)]); + var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names{j}]); + var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names{j}]); err_endo(:,j) = var1-var2; end; if max(max(abs(err_endo))) > 1e-10; @@ -78,10 +78,10 @@ end; err_exo = zeros(200,M_.exo_nbr,nobj_exo); for i=1:nobj_exo; - err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names(1,:)]),1),M_.exo_nbr); + err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names{1}]),1),M_.exo_nbr); for j=1:M_.exo_nbr; - var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names(j,:)]); - var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names(j,:)]); + var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names{j}]); + var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names{j}]); err_exo(:,j,i) = var1 - var2; end; if max(max(abs(err_exo))) > 1e-10; diff --git a/tests/kalman_filter_smoother/algoH2.mod b/tests/kalman_filter_smoother/algoH2.mod index bd54deabe..b6d5f2b4b 100644 --- a/tests/kalman_filter_smoother/algoH2.mod +++ b/tests/kalman_filter_smoother/algoH2.mod @@ -66,10 +66,10 @@ obj_exo = {'SmoothedShocks';}; nobj_endo = size(obj_endo,1); nobj_exo = size(obj_exo,1); for i=1:nobj_endo; - err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names(1,:) ',1);']),M_.endo_nbr); + err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names{1} ',1);']),M_.endo_nbr); for j=1:M_.endo_nbr; - var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names(j,:)]); - var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names(j,:)]); + var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names{j}]); + var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names{j}]); err_endo(:,j) = var1-var2; end; if max(max(abs(err_endo))) > 1e-10; @@ -80,10 +80,10 @@ end; err_exo = zeros(200,M_.exo_nbr,nobj_exo); for i=1:nobj_exo; - err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names(1,:)]),1),M_.exo_nbr); + err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names{1}]),1),M_.exo_nbr); for j=1:M_.exo_nbr; - var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names(j,:)]); - var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names(j,:)]); + var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names{j}]); + var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names{j}]); err_exo(:,j,i) = var1 - var2; end; if max(max(abs(err_exo))) > 1e-10; diff --git a/tests/kalman_filter_smoother/compare_results_simulation/fs2000.mod b/tests/kalman_filter_smoother/compare_results_simulation/fs2000.mod index d2410c55b..04a3cc704 100644 --- a/tests/kalman_filter_smoother/compare_results_simulation/fs2000.mod +++ b/tests/kalman_filter_smoother/compare_results_simulation/fs2000.mod @@ -17,7 +17,7 @@ */ /* - * Copyright (C) 2004-2010 Dynare Team + * Copyright (C) 2004-2018 Dynare Team * * This file is part of Dynare. * @@ -118,15 +118,14 @@ estimation(order=1,datafile=fsdat_simul_logged,consider_all_endogenous,nobs=192, ex_=[]; for shock_iter=1:M_.exo_nbr -ex_=[ex_ oo_.SmoothedShocks.Mean.(deblank(M_.exo_names(shock_iter,:)))]; +ex_=[ex_ oo_.SmoothedShocks.Mean.(M_.exo_names{shock_iter})]; end ex_ = ex_(2:end,:); % ex_ = zeros(size(ex_)); y0=[]; for endo_iter=1:M_.endo_nbr -y0 = [y0; -oo_.SmoothedVariables.Mean.(deblank(M_.endo_names(endo_iter,:)))(1)]; +y0 = [y0; oo_.SmoothedVariables.Mean.(M_.endo_names{endo_iter})(1)]; end; %make sure decision rules were updated diff --git a/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML.mod b/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML.mod index b02355b03..e0a47ca36 100644 --- a/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML.mod +++ b/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML.mod @@ -17,7 +17,7 @@ */ /* - * Copyright (C) 2004-2010 Dynare Team + * Copyright (C) 2004-2018 Dynare Team * * This file is part of Dynare. * @@ -119,7 +119,7 @@ estimation(order=1,datafile='fsdat_simul_logged', nobs=192, forecast=8,smoother, % write shock matrix ex_=[]; for shock_iter=1:M_.exo_nbr -ex_=[ex_ oo_.SmoothedShocks.(deblank(M_.exo_names(shock_iter,:)))]; +ex_=[ex_ oo_.SmoothedShocks.(M_.exo_names{shock_iter})]; end %select shocks happening after initial period @@ -128,8 +128,7 @@ ex_ = ex_(2:end,:); %get state variables at t=0 y0=[]; for endo_iter=1:M_.endo_nbr -y0 = [y0; -oo_.SmoothedVariables.(deblank(M_.endo_names(endo_iter,:)))(1)]; +y0 = [y0; oo_.SmoothedVariables.(M_.endo_names{endo_iter})(1)]; end; %make sure decision rules were updated diff --git a/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML_loglinear.mod b/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML_loglinear.mod index 0c4045651..473846baf 100644 --- a/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML_loglinear.mod +++ b/tests/kalman_filter_smoother/compare_results_simulation/fs2000_ML_loglinear.mod @@ -17,7 +17,7 @@ */ /* - * Copyright (C) 2004-2010 Dynare Team + * Copyright (C) 2004-2018 Dynare Team * * This file is part of Dynare. * @@ -119,7 +119,7 @@ estimation(order=1,datafile='../fsdat_simul',loglinear, nobs=192, forecast=8,smo % write shock matrix ex_=[]; for shock_iter=1:M_.exo_nbr -ex_=[ex_ oo_.SmoothedShocks.(deblank(M_.exo_names(shock_iter,:)))]; +ex_=[ex_ oo_.SmoothedShocks.(M_.exo_names{shock_iter})]; end %select shocks happening after initial period @@ -128,8 +128,7 @@ ex_ = ex_(2:end,:); %get state variables at t=0 y0=[]; for endo_iter=1:M_.endo_nbr -y0 = [y0; -oo_.SmoothedVariables.(deblank(M_.endo_names(endo_iter,:)))(1)]; +y0 = [y0; oo_.SmoothedVariables.(M_.endo_names{endo_iter})(1)]; end; %make sure decision rules were updated diff --git a/tests/kalman_filter_smoother/compare_results_simulation/fs2000_loglinear.mod b/tests/kalman_filter_smoother/compare_results_simulation/fs2000_loglinear.mod index 88150b060..ff054006c 100644 --- a/tests/kalman_filter_smoother/compare_results_simulation/fs2000_loglinear.mod +++ b/tests/kalman_filter_smoother/compare_results_simulation/fs2000_loglinear.mod @@ -17,7 +17,7 @@ */ /* - * Copyright (C) 2004-2010 Dynare Team + * Copyright (C) 2004-2018 Dynare Team * * This file is part of Dynare. * @@ -135,15 +135,14 @@ estimation(order=1, datafile='../fsdat_simul', nobs=192, loglinear, mh_replic=20 ex_=[]; for shock_iter=1:M_.exo_nbr -ex_=[ex_ oo_.SmoothedShocks.Mean.(deblank(M_.exo_names(shock_iter,:)))]; +ex_=[ex_ oo_.SmoothedShocks.Mean.(M_.exo_names{shock_iter})]; end ex_ = ex_(2:end,:); % ex_ = zeros(size(ex_)); y0=[]; for endo_iter=1:M_.endo_nbr -y0 = [y0; -oo_.SmoothedVariables.Mean.(deblank(M_.endo_names(endo_iter,:)))(1)]; +y0 = [y0; oo_.SmoothedVariables.Mean.(M_.endo_names{endo_iter})(1)]; end; %make sure decision rules were updated diff --git a/tests/observation_trends_and_prefiltering/generate_trend_stationary_AR1.m b/tests/observation_trends_and_prefiltering/generate_trend_stationary_AR1.m index eda809100..e56da7779 100644 --- a/tests/observation_trends_and_prefiltering/generate_trend_stationary_AR1.m +++ b/tests/observation_trends_and_prefiltering/generate_trend_stationary_AR1.m @@ -10,12 +10,12 @@ sigma_y=0.001; sigma_p=0.001; orig_params=[rho_y rho_p g_y g_p sigma_y sigma_p]'; -param_names=char('rho_y','rho_p','g_y','g_p','sigma_y','sigma_p'); +param_names={'rho_y'; 'rho_p'; 'g_y'; 'g_p'; 'sigma_y'; 'sigma_p'}; save orig_params_prefilter.mat orig_params param_names -orig_params=[rho_y rho_p g_y g_p const_y const_p sigma_y sigma_p]'; -param_names=char('rho_y','rho_p','g_y','g_p','const_y','const_p','sigma_y','sigma_p'); +orig_params = [rho_y rho_p g_y g_p const_y const_p sigma_y sigma_p]'; +param_names = {'rho_y'; 'rho_p'; 'g_y'; 'g_p'; 'const_y'; 'const_p'; 'sigma_y'; 'sigma_p'}; save orig_params.mat orig_params param_names diff --git a/tests/optimal_policy/mult_elimination_test.mod b/tests/optimal_policy/mult_elimination_test.mod index 1a9b2117b..b1523248a 100644 --- a/tests/optimal_policy/mult_elimination_test.mod +++ b/tests/optimal_policy/mult_elimination_test.mod @@ -50,7 +50,7 @@ ramsey_policy(order=1,irf=0,planner_discount=0.95); dr2 = mult_elimination({'R'},M_,options_,oo_); k1 = M_.nstatic+(1:M_.nspred); -k2 = strmatch('MULT_',M_.endo_names(oo_.dr.order_var(k1),:)); +k2 = strmatch('MULT_',M_.endo_names(oo_.dr.order_var(k1))); k3 = k1(setdiff(1:M_.nspred,k2)); k4 = oo_.dr.order_var(k3); diff --git a/tests/particle/dsge_base2_steadystate.m b/tests/particle/dsge_base2_steadystate.m index e714180ec..e23166849 100644 --- a/tests/particle/dsge_base2_steadystate.m +++ b/tests/particle/dsge_base2_steadystate.m @@ -1,4 +1,4 @@ -function [ys,check,penlt] = mze_steadystate(ys,exe) +function [ys,check,penlt] = dsge_base2_steadystate(ys, exe) global M_ persistent idx NumberOfParameters NumberOfEndogenousVariables @@ -10,11 +10,11 @@ if isempty(idx) NumberOfEndogenousVariables = M_.orig_endo_nbr; load_parameters = []; for i = 1:NumberOfParameters - load_parameters = [ load_parameters deblank(M_.param_names(i,:)) ' = M_.params(' int2str(i) '); ']; + load_parameters = [ load_parameters M_.param_names{i} ' = M_.params(' int2str(i) '); ']; end fill_ys = []; for i = 1:NumberOfEndogenousVariables - fill_ys = [fill_ys 'ys(' int2str(i) ') = ' deblank(M_.endo_names(i,:)) '_ss' '; ']; + fill_ys = [fill_ys 'ys(' int2str(i) ') = ' M_.endo_names{i} '_ss' '; ']; end idx = 1; end diff --git a/tests/partitioning/partitions.mod b/tests/partitioning/partitions.mod index de7a91037..486cab0fc 100644 --- a/tests/partitioning/partitions.mod +++ b/tests/partitioning/partitions.mod @@ -42,7 +42,7 @@ if isfield(M_.endo_partitions, 'long_name') error('long_name should not be a member of endo_partitions!') end -tmp = strvcat('United States', 'Euro Area', 'March'); +tmp = {'United States'; 'Euro Area'; 'March'}; if ~isequal(M_.endo_names_long, tmp) error('M_.endo_names_long is wrong!') diff --git a/tests/steady_state/walsh1_old_ss_steadystate.m b/tests/steady_state/walsh1_old_ss_steadystate.m index 953086264..cc09a2d2f 100644 --- a/tests/steady_state/walsh1_old_ss_steadystate.m +++ b/tests/steady_state/walsh1_old_ss_steadystate.m @@ -4,7 +4,7 @@ global M_ % read out parameters to access them with their name NumberOfParameters = M_.param_nbr; for ii = 1:NumberOfParameters - paramname = deblank(M_.param_names(ii,:)); + paramname = M_.param_names{ii}; eval([ paramname ' = M_.params(' int2str(ii) ');']); end % initialize indicator @@ -35,11 +35,11 @@ check = 0; %% end own model equations for iter = 1:length(M_.params) %update parameters set in the file - eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names(iter,:) ';' ]) + eval([ 'M_.params(' num2str(iter) ') = ' M_.param_names{iter} ';' ]) end NumberOfEndogenousVariables = M_.orig_endo_nbr; %auxiliary variables are set automatically for ii = 1:NumberOfEndogenousVariables - varname = deblank(M_.endo_names(ii,:)); + varname = M_.endo_names{ii}; eval(['ys(' int2str(ii) ') = ' varname ';']); end