在 Matlab 中估计自定义函数参数

Estimating custom function parameters in Matlab

我有一组数据,分布如下图。

它看起来很清楚,像一个函数:

k1*(1-e^(-t/T1))-k2*(1-e^(-t/T2)).

Matlab 中是否提供了一种方法来估计此类函数中的参数,或者您是否有任何想法在代码中估计它们以避免这样做'manually'? 谢谢

您正在寻找非线性优化。

查看 curve fitting toolbox,从未使用过,但它似乎具有指数拟合。

否则你可以定义你自己的目标函数f(k1,k2,T1,T2)(通常是你想要的曲线和你的数据之间的均方误差)。然后你应用优化算法来最小化错误(fminsearch() 工作得很好)。

如果您想在脚本中执行此操作,您可以执行以下操作:

ft = fittype( 'a*(1-exp(-t/b))-c*(1-exp(-t/d))', 'coefficients',{'a','b', 'c', 'd'},...
'independent', 't', 'dependent', 'y' ); 
f = fit(xValues, yValues, ft);

和f.a、f.b……可以得到参数值。您还可以调整更多设置,请参阅 fit func at Mathworks