【问题标题】:matlab fit second order exponential decay - something is wrongmatlab拟合二阶指数衰减 - 出了点问题
【发布时间】:2014-06-24 03:09:37
【问题描述】:

我有想要拟合二阶指数衰减的数据,它看起来工作正常。 一个示例文件: https://dl.dropboxusercontent.com/u/6170801/example.mat

ty 是我的数据[x y]

我的体型

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

我想修复两个时间常数。我的选择:

Mfopt = fitoptions('method','nonlinearleastsquares','normalize','on','startpoint',[0 0 0 0],'lower',[0 0 0 -Inf],'upper',[Inf Inf Inf 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,曲线拟合的默认算法是 Trust-Region,而不是 Levenberg-Marquardt。

【问题讨论】:

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

标签: matlab curve-fitting


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2020-09-11
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多