Python 高斯拟合不考虑峰值的负部分

Python 高斯拟合不考虑峰值的负部分,python,curve-fitting,gaussian,spectrum,Python,Curve Fitting,Gaussian,Spectrum,正如你们在下图中看到的,我正在对光谱进行高斯拟合,其中一些光谱位于y轴的负部分: 我就是这样做的: def Gauss(velo_peak, a, mu0, sigma): res = a * np.exp(-(velo_peak - mu0)**2 / (2 * sigma**2)) return res mu0 = sum(velo_peak * spec_peak) / sum(spec_peak) sigma = np.sqrt(sum(spec_p

正如你们在下图中看到的,我正在对光谱进行高斯拟合,其中一些光谱位于y轴的负部分:

我就是这样做的:

def Gauss(velo_peak, a, mu0, sigma):
         res = a * np.exp(-(velo_peak - mu0)**2 / (2 * sigma**2))
         return res
mu0 = sum(velo_peak * spec_peak) / sum(spec_peak)
sigma = np.sqrt(sum(spec_peak * (velo_peak - mu0)**2) / sum(spec_peak))
peak = max(spec_peak) 
p0 = [peak, mu0, sigma]   
popt,pcov = curve_fit(Gauss, velo_peak, spec_peak, p0, maxfev=100000)

我的主要目标是找到光谱的峰值,但这显然是对峰值的高估。是否有一些条件可以应用于高斯拟合函数?

由于您可以定义所需的任何函数,请尝试向您的
高斯
函数添加偏移:

def Gauss(velo_peak, a, mu0, sigma, offs):
         res = a * np.exp(-(velo_peak - mu0)**2 / (2 * sigma**2)) + offs
         return res