我对数学的了解有限,这就是我可能被困的原因.我有一个光谱,我试图适应两个高斯峰.我可以适应最大的峰值,但我无法适应最小的峰值.我知道我需要对两个峰值的高斯函数求和,但我不知道哪里出了问题.显示当前输出的图像:

蓝线是我的数据,绿线是我目前适合的.在我的数据中主峰左侧有一个肩膀,我目前正在尝试使用以下代码:
import matplotlib.pyplot as pt
import numpy as np
from scipy.optimize import leastsq
from pylab import *
time = []
counts = []
for i in open('/some/folder/to/file.txt', 'r'):
segs = i.split()
time.append(float(segs[0]))
counts.append(segs[1])
time_array = arange(len(time), dtype=float)
counts_array = arange(len(counts))
time_array[0:] = time
counts_array[0:] = counts
def model(time_array0, coeffs0):
a = coeffs0[0] + coeffs0[1] * np.exp( - ((time_array0-coeffs0[2])/coeffs0[3])**2 )
b = coeffs0[4] + coeffs0[5] * np.exp( - ((time_array0-coeffs0[6])/coeffs0[7])**2 )
c = a+b
return c
def residuals(coeffs, counts_array, time_array):
return …Run Code Online (Sandbox Code Playgroud)