pkg load optim % create some "data" X = linspace(-5,5,50); Y = 2*(X-1).^2 - 1 + 1*randn(size(X)); base_settings = optimset( "ret_dfdp",1,"ret_covp",1,"ret_corp",1,'objf_type','wls' ); % fit with curvefit, parameter vector F = @(p,x) p(1) + p(2)*x + p(3)*x.^2; PIN = [1 1 1 1](:); settings = optimset(base_settings, "fixed", [0 0 0 1](:) ); [P, FY, CVG, OUTP] = nonlin_curvefit (F, PIN, X, Y, settings); plot(X,Y,'.',X,F(P,X),'-'); INFO = curvefit_stat (F, P, X, Y, settings); % fit with curvefit, parameter struct F2 = @(p,x) p.const + p.lin*x + p.quad*x.^2; PIN2 = struct("const",1,"lin",1,"quad",1,"dummy",0); param_config = struct(); param_config.dummy.fixed = 1; settings2 = optimset(base_settings, "f_pstruct",1, "param_config",param_config ); [P2, FY2, CVG2, OUTP2] = nonlin_curvefit (F2, PIN2, X, Y, settings2); INFO2 = curvefit_stat (F2, P2, X, Y, settings2);