Hello everyone. I'm trying to use lsqcurvefit to get optimal parameter value for K (see code). The fitting looks fine except for 2 things: fitted curves are always shifted down by some amount to respect to the data (see picture), and the values I get for K are complex when it should be a real number (but I guess that's a subproduct of the main problem here). K values for different initial guesses are similar, which is good. I really don't know what is going on, I hope someone can give me a hint.
Here's the code:
R=[0.1:0.1:0.4 0.6:0.2:1.8 2.1 2.4:0.4:3.2 3.8 4.8 6 8.4 12.8 20 36];pks_locs1 = [114 93.5 144 167 199.5 225.5 275 271.5 282.5 301.5 315.5 319.5 348 356.5 362.5 390.5 408.5 420.5 464.5 449.5 457.5 477 494.5]';CIS_H2 = 352.6;H=0.0002529;G=H./R';fun_H2=@(K,R) pks_locs1(1)+CIS_H2*(K*G*(1+R)+1-sqrt((K*G*(1+R)+1)^2-R'*(2*K*G').^2))/(2*K*G');K0_H2=100;K=lsqcurvefit(fun_H2,K0_H2,R,pks_locs1(2:end))plot([0 R],pks_locs1,'ko',R,fun_H2(K,R),'b-')legend('Data','Fitted exponential')title('Data and Fitted Curve')
The value I get for K is 9.3155e+03 – 1.1463e-01i. I have tried using lsqnonlin with similar results: fitted curve down-shifted and complex K values.
Thanks in advance!
Best Answer