在 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
我有一组数据,分布如下图。
它看起来很清楚,像一个函数:
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