From 1f060cb84cf473a19b9b56dbb8ce1d8ca649a1ff Mon Sep 17 00:00:00 2001
From: Marco Ratto <marco.ratto@ec.europa.eu>
Date: Thu, 23 Jan 2020 17:55:55 +0100
Subject: [PATCH] trap error when sub_draws is set to zero

(cherry picked from commit 79cca46dd6d0b9af3ffba1ba650242277eb94198)
---
 matlab/dynare_estimation_1.m | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index b9abcbabb2..a4ac05d0c8 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -519,23 +519,27 @@ if (any(bayestopt_.pshape  >0 ) && options_.mh_replic) || ...
             end
         end
         [error_flag,~,options_]= metropolis_draw(1,options_,estim_params_,M_);
-        if options_.bayesian_irf
-            if error_flag
-                error('Estimation::mcmc: I cannot compute the posterior IRFs!')
+        if ~(~isempty(options_.sub_draws) && options_.sub_draws==0)
+            if options_.bayesian_irf
+                if error_flag
+                    error('Estimation::mcmc: I cannot compute the posterior IRFs!')
+                end
+                PosteriorIRF('posterior');
             end
-            PosteriorIRF('posterior');
-        end
-        if options_.moments_varendo
-            if error_flag
-                error('Estimation::mcmc: I cannot compute the posterior moments for the endogenous variables!')
+            if options_.moments_varendo
+                if error_flag
+                    error('Estimation::mcmc: I cannot compute the posterior moments for the endogenous variables!')
+                end
+                oo_ = compute_moments_varendo('posterior',options_,M_,oo_,var_list_);
             end
-            oo_ = compute_moments_varendo('posterior',options_,M_,oo_,var_list_);
-        end
-        if options_.smoother || ~isempty(options_.filter_step_ahead) || options_.forecast
-            if error_flag
-                error('Estimation::mcmc: I cannot compute the posterior statistics!')
+            if options_.smoother || ~isempty(options_.filter_step_ahead) || options_.forecast
+                if error_flag
+                    error('Estimation::mcmc: I cannot compute the posterior statistics!')
+                end
+                prior_posterior_statistics('posterior',dataset_,dataset_info);
             end
-            prior_posterior_statistics('posterior',dataset_,dataset_info);
+        else
+            fprintf('Estimation:mcmc: sub_draws was set to 0. Skipping posterior computations.')
         end
         xparam1 = get_posterior_parameters('mean',M_,estim_params_,oo_,options_);
         M_ = set_all_parameters(xparam1,estim_params_,M_);
-- 
GitLab