From 03641585e4141beea5400faf7de9d2c198d3b3f4 Mon Sep 17 00:00:00 2001 From: Willi Mutschler Date: Thu, 26 Nov 2020 12:58:34 +0100 Subject: [PATCH] :white_check_mark: Fix lsqnonlin in Octave --- matlab/optimization/dynare_minimize_objective.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/matlab/optimization/dynare_minimize_objective.m b/matlab/optimization/dynare_minimize_objective.m index 475392f59..512f3c8dc 100644 --- a/matlab/optimization/dynare_minimize_objective.m +++ b/matlab/optimization/dynare_minimize_objective.m @@ -537,7 +537,13 @@ switch minimizer_algorithm if options_.silent_optimizer optim_options = optimset(optim_options,'display','off'); end - [opt_par_values,Resnorm,fval,exitflag,OUTPUT,LAMBDA,JACOB] = lsqnonlin(objective_function,start_par_value,bounds(:,1),bounds(:,2),optim_options,varargin{:}); + if ~isoctave + [opt_par_values,Resnorm,fval,exitflag,OUTPUT,LAMBDA,JACOB] = lsqnonlin(objective_function,start_par_value,bounds(:,1),bounds(:,2),optim_options,varargin{:}); + else + % Under Octave, use a wrapper, since lsqnonlin() does not have a 6th arg + func = @(x)objective_function(x,varargin{:}); + [opt_par_values,Resnorm,fval,exitflag,OUTPUT,LAMBDA,JACOB] = lsqnonlin(func,start_par_value,bounds(:,1),bounds(:,2),optim_options); + end otherwise if ischar(minimizer_algorithm) if exist(minimizer_algorithm)