【发布时间】:2020-04-21 21:10:47
【问题描述】:
我正在尝试使用scipy.optimization.curve_fit 用双高斯函数拟合一些数据:
Double gaussian fit with two centroids
def _2gaussian(x, amp1, cen1, sigma1, amp2, cen2, sigma2):
g1 = amp1 * (1 / (sigma1 * (np.sqrt(2 * np.pi)))) * (np.exp((-1.0 / 2.0) * (((x - cen1) / sigma1) ** 2)))
g2 = amp2 * (1 / (sigma2 * (np.sqrt(2 * np.pi)))) * (np.exp((-1.0 / 2.0) * (((x - cen2) / sigma2) ** 2)))
return g1 + g2 # + cen2
所以我的问题是:我的数据非常对称,我试图对两个高斯函数使用具有公共/共享质心的双高斯拟合。我试图在前面的公式中写cen1 而不是cen2(并在参数中保留cen2),或者也只是完全消除cen2 作为参数。这些都不起作用,因此获得的拟合只是一条中间有一个大尖峰的平坦曲线。您对如何共享质心有任何建议吗?
【问题讨论】:
-
您好,欢迎您。如果可能,尝试给出一个完整的最小工作示例,并带有一些(通用)数据。除此之外,您是否尝试过提供一些合理的起始值?
标签: python data-fitting