Make GetOneDraw.m only compute posterior for prior if needed

Potentially saves a lot of time
time-shift
Johannes Pfeifer 2015-04-04 19:37:59 +02:00
parent ca5c714e29
commit f57cf46df9
1 changed files with 9 additions and 8 deletions

View File

@ -1,20 +1,19 @@
function [xparams, logpost] = GetOneDraw(type) function [xparams, logpost] = GetOneDraw(type)
% function [xparams, logpost] = GetOneDraw(type) % function [xparams, logpost] = GetOneDraw(type)
% draws one row from metropolis % draws one parameter vector and its posterior from MCMC or the prior
% %
% INPUTS % INPUTS
% type: posterior % type: [string] 'posterior': draw from MCMC draws
% prior % 'prior': draw from prior
% %
% OUTPUTS % OUTPUTS
% xparams: vector of estimated parameters (drawn from posterior distribution) % xparams: vector of estimated parameters (drawn from posterior or prior distribution)
% logpost: log of the posterior density relative to this row % logpost: log of the posterior density of this parameter vector
% %
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% none % none
% Copyright (C) 2005-2011 Dynare Team % Copyright (C) 2005-2015 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -36,5 +35,7 @@ switch type
[xparams, logpost] = metropolis_draw(0); [xparams, logpost] = metropolis_draw(0);
case 'prior' case 'prior'
xparams = prior_draw(0); xparams = prior_draw(0);
logpost = evaluate_posterior_kernel(xparams'); if nargout>1
logpost = evaluate_posterior_kernel(xparams');
end
end end