lsqcurvefit initial values stays the same
Ältere Kommentare anzeigen
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:

2 Kommentare
Torsten
am 4 Sep. 2019
I guess you get complex numbers for x(1),...,x(5) when simulating the unbounded case.
Upper and lower bounds on the parameters only make sense if they are real-valued.
Do you see the problem ?
Matt J
am 13 Sep. 2019
Alex Sha's comment moved here:
Hi, chuen kai chung, would you please attach your data file please, either in Excel format or text format
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Get Started with Curve Fitting Toolbox finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

