我正在使用scipy(scipy.optimize.curve_fit)编写Python程序。我必须在数据集上拟合多条曲线,然后总结它们。第一步是找到所有最大值,完成。至少有一个,但通常更多。我想概括一下如下内容。更改变量的lambda
if (len(Maxima) == 1):
f = lambda a, b, c : a * exp((b * x) + c)
else if (len(Maxima) == 2):
f = lambda a, b, c, d, e, f : (a * exp((b * x) + c)) + (d * exp((e * x) + f)
等等。我需要它,因此curve_fit将会识别出有(3 * Maxima)参数,然后它会为我找到它们。最多可以有20条曲线左右,所以做上述说明是不现实的。
任何帮助,将不胜感激。
谢谢。
编辑: 对不起,我错过了功能依赖最大值。它实际上是一个集中在每个最大值上的高斯分布。
I.e.一个术语实际上是
f = (a * (Gamma ** 2)/(((E - Maxima[i])**2) + (b**2)))
而E是参数必须以自变量开始。
例如,对于
len(Maxima) == 2
ARGS必须是,
E, a0, b0, Maxima[0], a1, b1, Maxima[1]
对不起,我错了。
EDIT2:
我想是这样的:
GaussianDistribution = lambda E, E0, I0, Sigma : (I0 * np.exp(-(((E - E0)/Sigma)**2)))
args = tuple([long] * ((len(Maxima) * 3) + 1))
d1, d2 = sc.curve_fit(GaussianDistribution(*args), Data[:, 0], Data[:, 1])
对不起,我错过了一些信息。我在介绍中加入了它,因为在这里发帖太久了。 – Jacob 2013-03-21 15:17:54