MATLAB: How to use the ‘least square fit’ least square fit i have a function: f(t)=Asin(Bt^C+D)e^(-Et)+F and starting point values: A = -6, B = 1, C = 1, D = 0, E = 0, F = 0. and xdata = 0:0.51:195*0.51 and ydata is a 1*196 vector how can i use lsqcurvefit() to fit my data? Best Answer xdata = 0:0.51:195*0.51;ydata = ...;fun = @(x,xdata)x(1)*sin(x(2)*xdata.^x(3)+x(4)).*exp(-x(5)*xdata)+x(6);x0 = [-6 ,1 ,1 ,0 ,0 ,0];x = lsqcurvefit(fun,x0,xdata,ydata) Related SolutionsMATLAB: Lsqcurvefit question (Function value and YDATA sizes are not equal.) Hi,Use elementwise operations to declare your function:xdata=[1,5,10,20,50];ydata=[0.3, 1.6, 2.8, 4.6, 7.6];fun=@(x,xdata)x(1).*1-x(1).*(1-exp(((-1).*x(2)).*xdata))./(x(2).*xdata);x0=[10,5];x=lsqcurvefit(fun,x0,xdata,ydata);This version works.Best regardsStephan MATLAB: How to use ‘Least Squares Solver and Jacobian’ instead of ‘fminunc’ Assuming D_d is the Jacobian of myfun, it would be,while (sum(abs(beta_u-beta_d))>0.1 && counter< 500) initial_guess = randn(2,4); opts = optimoptions(@lsqcurvefit,'MaxIterations',10000,'MaxFunctionEvaluations',50000,... 'SpecifyObjectiveGradient',true); [B,FVAL,residual,exitflag,output,lambda,jacobian]= ... lsqcurvefit(@myfun, initial_guess,input_vars,beta_u,[],[],opts); grad=jacobian.'*residual(:); input_vars = s; [beta_d, D_d]=myfun(B,input_vars); counter = counter+1;end Related QuestionHow to use options in fsolveLsqcurvefit Error using /Bug in least squares fittingProblem by star values lsqcurvefitFailure in initial objective function evaluation. LSQCURVEFIT cannot continue.
Best Answer