适合实验数据的功能

时间:2015-04-03 11:13:25

标签: math regression julia curve-fitting

我有指数函数(高斯分布)

 f(time)=exp(-((time-A)^2)/B)

我有一个实验数据,形成矩阵[时间,价值]。我想要做的是执行一些A和B参数的调整,这将给我最好的结果,这是第一个功能接近实验数据图。 这是我在Julia手动调整所完成的,但我正在寻找一种自动化方式。

Comparison.jpg

问候

麦克

3 个答案:

答案 0 :(得分:2)

很难从图片中看出,但您的数据似乎是对强制变量的阶跃变化的响应。实际上,两步变化:一个在温度增加时约为t = 1.4,另一个在温度增加时约为t = 1.6。在每个步骤改变之后,温度模型可能是衰减指数,增加或减少到稳态水平。类似于temp(t) = B + (A - B)*exp(-(t - t_change)/c) t >= t_change,其中A是起始温度,B是稳态温度,c是时间刻度。 ABct_change可能是免费参数。您可以使用最小二乘法来查找它们。

棘手的部分是从观察到的数据中确定t_change。 (但是如果您已经知道t_change,只需将其插入即可。)您可能需要制定某种嵌套优化 - 对于t_change的许多可能值中的每一个,优化其他参数。然后选择t_change,它最适合其他参数。

请参阅Seber和Wild,"非线性回归",了解有关此类作品中定义的模型的更多信息。

答案 1 :(得分:1)

试试这个。这是你原来的功能:

y(t) = exp(-(t-A)^2/B)

采取双方的自然日志:

ln(y) = -(t-A)^2/B = -(t^2-2*A*t+A^2)/B

现在你有一个二阶多项式,你可以使用最小二乘拟合来获得A和B的值,以最小化误差平方和。

既然我可以看到你的功能,我会忽略t = 1.4 seconds跳转前的值。仅适合t >= 1.4 seconds的值。

答案 2 :(得分:0)

高斯分布由两个参数唯一确定,即分布的平均值(在您的情况下为A)和方差sigma(与您的B相关2*sigma^2=B )。

因此,您只需计算数据的均值和方差,并将其插入高斯数据中。