我有一条看起来像指数函数的曲线,我想用这个方程拟合这条曲线:
目标是找到 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 我想最小化差异拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117488/