我有一个看起来像一个exponentiel函数的曲线,我想用这个公式,以适应这条曲线:MATLAB我想差最小化安装
的目标是寻找价值A
,T
和d
这将使我的初始曲线最小化V
。
我做了一个能够做到这一点的功能,但它需要10秒钟才能运行。 3个循环,测试我想要的所有值,并在3个循环的末尾计算我的2条曲线之间的RMSD(均方根偏差),并将结果放入一个向量min_RMSN
,最后我检查最小值为min_RMSD
并且完成了...
但是这并不是最好的方法。
感谢你的帮助,想法:)
我有一个看起来像一个exponentiel函数的曲线,我想用这个公式,以适应这条曲线:MATLAB我想差最小化安装
的目标是寻找价值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本身,并且计算平方根需要时间。
你有没有试过Matlab的曲线拟合工具箱? –
发布您的功能。 –