Hi all, I am working on this non-linear square curvefit function, however, despite many attempts, the initial guessess were always chosen despite of given boundaries. Unbounded worked. But that isn't within the bounds. I really at my end of working on possible ideas. The data given as a total of 101 for each array.
EDIT: I have made some changes which is now bounded and using the default trust-region-reflective algorithm
T = readtable('skin3.csv','ReadVariableNames',true); %skin3 Measured data
x = T{:,1}; %freq
y = T{:,2}; %real
%Transpose
freq = x.';e_real = y.';%optimoptions(@lsqnonlin,'StepTolerance',1e-6);
options = optimset('MaxFunEvals',10000);options=optimset(options,'MaxIter',10000);guess = 40;UB = guess + 10;LB = guess - 10;lb = [-20,LB,1,0,-0.1];ub = [20,UB,40,1,0.1];x0 = [0.9,guess,8.2,0.236,0.05];x = lsqcurvefit(@flsq,x0,freq,e_real,lb,ub,options)e_f = x(1);e_del = x(2)*1e2;tau1 = x(3)*1e-12;alf1 = x(4);sig = x(5);yfit = real(flsq(x,freq));%plot e_real against freq
plot(freq,e_real,'k.',freq,yfit,'b-')legend('Data','Fitted exponential')title('Data and Fitted Curve')
Function:
function y = flsq(x,freq) x(3)=x(3)*1e-12; y = x(1) + (x(2)-x(1))./(1 + ((1j*2*pi.*freq*x(3)).^(1-x(4))))+x(5)./(1j*2*pi*freq*8.854e-12); end
As you can see the result remained the same while the curve is not even close:
Best Answer