我有一条看起来像指数函数的曲线,我想用这个等式拟合这条曲线:
目标是找到A,T和d的值,这将使我的初始曲线最小化V.
我做了一个能够做到的功能,但运行需要10秒.
测试我想要的所有值的3个循环以及3个循环结束时我计算了2条曲线之间的RMSD(均方根偏差),并将结果放入向量min_RMSN,最后检查最小值min_RMSD的价值已经完成……
但这不是最好的方式.
谢谢你的帮助,想法:)
最佳答案 Matlab具有内置的
fminsearch
功能,可以完全满足您的需求.您定义了一个函数句柄,它使您的数据的RMSE与函数拟合,传入您对A,T和d的初始猜测,并得到一个结果:
x0 = [A0, T0, d0]
fn = @(x) sum((x(1) * (1 - exp(-x[2] / (t - x[3]))) - y).^2)
V = fminsearch(@fn, x0)
这里t是你所拥有的曲线的x数据,y是相应的y值,A0,T0,d0是你的参数的初始猜测. fn计算理想曲线和y之间的RMSE的平方.无需采用平方根,因为最小化方形也将最小化RMSE本身,并且计算平方根需要时间.