【发布时间】:2017-10-18 23:05:41
【问题描述】:
我有一个非常具体的任务,我需要找到我的指数函数的斜率。
我有两个阵列,一个表示 400 到 750 nm 之间的波长范围,另一个表示吸收光谱。 x = 波长,y = 吸收。
我的 fit 函数应该是这样的:
y_mod = np.float(a_440) * np.exp(-S*(x - 440.))
其中S 是斜率,在图像中等于 0.016,它应该在我应该得到的 S 值范围内 (+/- 0.003)。 a_440 为 440 nm 处的参考吸收,x 为波长。
建模与原始图:
我想知道如何定义我的函数,以便得到它的 指数拟合(不是对数转换量),而无需事先猜测是什么S 值为。
到目前为止我尝试过的是以这种方式定义函数:
def func(x, a, b):
return a * np.exp(-b * (x-440))
它提供了非常好的匹配
我不确定这种方法是否正确,还是我应该采取不同的做法? 如何同时使用最小二乘法或 y 方法中的绝对差异来最小化以消除重叠值的影响?
是否也可以在数据中添加随机噪声并重新计算拟合?
【问题讨论】:
-
你能展示一下你目前尝试过的代码吗?
-
在python中处理异常值检查robust fitting
-
@mikuszefski,非常感谢!
标签: python scipy curve-fitting