I am struggling with the code generation of a function containing the fsolve command (supported since R2020b). Since it is a rather new topic, I did not find any related entries. This is the function i try to generate the mex-file for: function [x] = test_function(a,b) %#codegen x = zeros(1); opts = optimoptions('fsolve','Algorithm','levenberg-marquardt','Display','off'); % opts = optimoptions(opts,a.string,a.val); fcn = @(in)feval(b,in); rng default x0 = double(0.00);x(1) = fsolve(fcn,x0,opts); end And this is how I setup the code generation: cfg = coder.config('mex'); types = coder.getArgTypes('mytest','test_function') codegen -config cfg -args types test_function With the following function to get the coder.Types: function out = mytest a.val = 10e-5; a.string = "FunctionTolerance"; b = 'myeq'; out = test_function(a,b); end The struct a has no purpose yet, but will later be used to setup the optimoptions. Error Message after calling the codegen: "??? Index expression out of bounds. Attempted to access element 1. The valid range is 1-0." In the Coder Report Viewer it sais, that the error occured in function projectBox. I would appreciate any thoughts on this.
Prashant Kumar answered .
2025-11-20
function [x] = test_function(a,b)
%#codegen
x = zeros(1);
opts = optimoptions('lsqnonlin','Algorithm','levenberg-marquardt','Display','off');
% opts = optimoptions(opts,a.string,a.val);
fcn = @(in)feval(b,in);
rng default
x0 = double(0.00);x(1) = lsqnonlin(fcn,x0,-Inf,Inf,opts);
end