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

时间:2016-07-03 17:45:18

标签: matlab estimation

我有一组数据,如下图所示。 data

它看起来像一个函数:

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

Matlab中是否提供了一种方法来估计这类函数中的参数,或者您是否有任何在代码中估计它们的想法以避免“手动”执行此操作? 感谢。

2 个答案:

答案 0 :(得分:2)

您正在寻找非线性优化。

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

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

答案 1 :(得分:2)

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

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