我正在使用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