LMFITライブラリ を使用してマルチローレンツフィッティングを作成しようとしていますが、機能しません。また、 の構文が完全に間違っていますしかし、私には新しいアイデアはありません。LMFITを使用してマルチピーク関数をデータセットにフィッティング
私の問題はこれです:私は ピークの複数のセットと非常に長いスペクトルを持っているが、ピークの数がこれらのセットには一定ではないので、 時々私はちょうど1ピークを持っていますが、時々私は8を持っているかもしれません あるいは20
#function definition:
def Lorentzian(x, amp, cen, wid, n):
f = 0
for i in range(int(n)):
"lorentzian function: wid = half-width at half-max"
f += (amp[i]/(1 + ((x-cen[i])/wid[i])**2))
return f
#library import and model definition:
import lmfit as lf
lmodel = lf.Model(Lorentzian)
#The initial parameters for the model:
peaks_in_interval = np.array([2378, 2493, 2525, 2630, 2769])
number_of_peaks = len(peaks_in_interval)
amplitude = width = np.zeros(number_of_peaks) + 1
center = x[peaks_in_interval]
params = lmodel.make_params(x = x, amp = amplitude, cen = center, wid = width, n = number_of_peaks)
#This is the line that doesn't work:
result = lmodel.fit(y, params, x = x)
私は私が マルチローレンツを返す一般的な機能をしようとして始めましたが、私はその仕事をするためにどのように苦労しています...
x、y配列のデータも送る。
This is what the DataSet of x and y looks like.
ありがとうございます。 好奇心が強い場合は、peakutils.baselineモジュールを使用して、その区間の平均ベースラインを作成します。ベースラインに合わせてn次の多項式を作成します(通常はn = 2を使用します)。 –