MATLAB 我想最小化差异拟合

标签 matlab optimization

我有一条看起来像指数函数的曲线,我想用这个方程拟合这条曲线:

enter image description here

目标是找到 ATd 的值,这将使 V 最小化初始曲线。

我做了一个能够做到的功能,但它需要 10 秒才能运行。 3 个循环测试我想要的所有值,在 3 个循环结束时,我计算 2 条曲线之间的 RMSD(均方根偏差),并将结果放入向量 min_RMSN 中,最后我检查了 min_RMSD 的最小值并完成了...

但这肯定不是最好的方法。

谢谢你的帮助,想法:)

最佳答案

Matlab 有一个内置的 fminsearch功能几乎完全符合您的要求。您定义一个函数句柄,它采用数据的 RMSE 与函数拟合,传入您对 ATd 的初始猜测,得到结果:

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 值,A0T0d0 是您的参数的初始猜测。 fn 计算理想曲线和 y 之间的 RMSE 的平方。无需求平方根,因为最小化平方也会最小化 RMSE 本身,并且计算平方根需要时间。

关于MATLAB 我想最小化差异拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117488/

相关文章:

java - 在ArrayBlockingQueue中,为什么将final成员字段复制到本地final变量中?

asp.net - MVC 4 中的运行时动态 bundle 和缩小

java - 将多个方法包装成一个的函数式方法

matlab - 如何在 MATLAB 中将矩阵乘以标量值

WPF路径重复

matlab - 命令行读取 DNG 图像

matlab - 使用 MATLAB Compiler 构建应用程序时抑制控制台窗口

optimization - Opencl,使用指向不同本地内存的全局指针会创建分支吗?

matlab - 计算两个矩阵中每个行组合之间的距离

c++ - MATLAB任意代码执行