diff --git a/matlab/+mom/objective_function.m b/matlab/+mom/objective_function.m index 419c7112b249361f8d276a625f4db0035cf036c6..181e27f1ea2a73db38ca082cce1161413f6d6bfc 100644 --- a/matlab/+mom/objective_function.m +++ b/matlab/+mom/objective_function.m @@ -74,7 +74,7 @@ if strcmp(options_mom_.mom.mom_method,'GMM') || strcmp(options_mom_.mom.mom_meth df = nan(size(oo_.mom.data_moments,1),length(xparam)); end else - df = nan(1,length(xparam)); + df = nan(length(xparam),1); end end end @@ -284,9 +284,9 @@ if strcmp(options_mom_.mom.mom_method,'GMM') || strcmp(options_mom_.mom.mom_meth df(:,jp) = dresiduals; end else - df(:,jp) = dresiduals'*residuals + residuals'*dresiduals; + df(jp,1) = dresiduals'*residuals + residuals'*dresiduals; if options_mom_.mom.penalized_estimator - df(:,jp)=df(:,jp)+(dxparam1(:,jp))'/oo_.mom.prior.variance*(xparam-oo_.mom.prior.mean)+(xparam-oo_.mom.prior.mean)'/oo_.mom.prior.variance*(dxparam1(:,jp)); + df(jp,1)=df(jp,1)+(dxparam1(:,jp))'/oo_.mom.prior.variance*(xparam-oo_.mom.prior.mean)+(xparam-oo_.mom.prior.mean)'/oo_.mom.prior.variance*(dxparam1(:,jp)); end end end diff --git a/matlab/optimization/dynare_minimize_objective.m b/matlab/optimization/dynare_minimize_objective.m index 5ad84e1ee9798d57d5a5e6f50733ff7fe1613472..582b456451db0bf2950c5e03ceffc5794c7d3d9c 100644 --- a/matlab/optimization/dynare_minimize_objective.m +++ b/matlab/optimization/dynare_minimize_objective.m @@ -263,7 +263,7 @@ switch minimizer_algorithm Verbose = 0; end % Set flag for analytical gradient. - if options_.analytic_derivation + if options_.analytic_derivation || (isfield(options_,'mom') && options_.mom.analytic_jacobian==1) analytic_grad=1; else analytic_grad=[]; @@ -276,7 +276,7 @@ switch minimizer_algorithm if isempty(prior_information) %mr_hessian requires it, but can be NaN prior_information.p2=NaN(n_params,1); end - if options_.analytic_derivation + if options_.analytic_derivation old_analytic_derivation = options_.analytic_derivation; options_.analytic_derivation=-1; %force analytic outer product gradient hessian for each iteration analytic_grad=1;