Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab拟合二阶指数衰减-有问题_Matlab_Curve Fitting - Fatal编程技术网

matlab拟合二阶指数衰减-有问题

matlab拟合二阶指数衰减-有问题,matlab,curve-fitting,Matlab,Curve Fitting,我有数据,我想拟合二阶指数衰减,它看起来工作得很好。 示例文件: ty是我的数据,如[xy] 我的体型 Mftype=fittype('A1*exp(-x/t1)+A2*exp(-x/t2)+y0','problem',{'t1','t2'}) 我想把这两个时间常数都修好。我的选择: Mfopt=fitoptions('method'、'nonlinearleastsquares'、'normalize'、'on'、'startpoint'、[0 0 0]、'lower'、[0 0 0-Inf

我有数据,我想拟合二阶指数衰减,它看起来工作得很好。 示例文件:

ty
是我的数据,如
[xy]

我的体型

Mftype=fittype('A1*exp(-x/t1)+A2*exp(-x/t2)+y0','problem',{'t1','t2'})

我想把这两个时间常数都修好。我的选择:

Mfopt=fitoptions('method'、'nonlinearleastsquares'、'normalize'、'on'、'startpoint'、[0 0 0]、'lower'、[0 0 0-Inf]、'upper'、[Inf])

那么我适合:

[MfitObj MfitGdn MfitOut]=fit(ty(:,1),ty(:,2),Mftype,Mfopt,'problem',{tau-tau})

问题是,当使用从fitObject计算的拟合系数手动计算x的特定值时,得到的y不是拟合曲线的一部分

进入时:

figure
plot(ty(:,1),ty(:,2))
ylim([0 10]);xlim([0 1800])
hold on;plot(MfitObj)
y=MfitObj.A1*exp(-400/tau)+MfitObj.A2*exp(-400/tau)+MfitObj.y0;
hold on;plot(400,y,'o');hold off;
您可以看到,手动计算的x=400的值与表示使用相同系数的拟合函数不对应

我的问题是:为什么? 提前谢谢


编辑:我使用Matlab R2010b,曲线拟合的默认算法是信赖域,而不是Levenberg-Marquardt。

我发现了这个问题的根源:如果拟合被规范化,所有系数都会得到某种偏移量,这些偏移量会被加到/减去。但是系数显示时没有它,这就是为什么只有这些系数的方程是不同的

如果您的评论解决了问题,请将其作为答案发布,并接受您自己的答案。