我需要将Runreg.m中给出的数据拟合到CalculateTime.m中给出的公式中,但resnorm的值非常高,我不能很好地拟合。使用lsqcurvefit,我该如何改进拟合
使用获得的A和σ值,如果我的CalculateTime与实际时间有很大不同。
CalculateTime.m
function [ Ta] = CalculateTime(par_fit,n)
T1=484.437812;
sigma = par_fit(1);
A= par_fit(2);
const1= sigma*(T1-T1/(2*A));
const2= T1/A -T1*sigma/(2*A);
Ta = n.^(-1)*const1 + const2;
end
Runreg.m
n=[1.0000 1.5000 2.0000 2.5000 3.0000 4.0000];
Ta=[484.437812 424.2085 382.3534 352.1422 311.6865 253.5879];
plot(n,Ta,'o')
par_fit=[0.8,2];
options = optimset('Display','iter','TolX', 1e-10, 'TolFun', 1e-10, 'MaxFunEvals', 4000, 'MaxIter', 4000);
[x,resnorm,residual]=lsqcurvefit(@CalculateTime,par_fit,n,Ta,[0 1],[1 Inf],options);
hold on
plot(n,CalculateTime(x,n))
hold off
@HighPerformanceMark:刚刚更新的问题。 – Biparite