python里面怎么实现双高斯分布拟合
时间: 2024-05-16 08:15:46 浏览: 235
在Python中,可以使用SciPy库的optimize模块中的curve_fit函数对双高斯分布进行拟合。以下是一个简单的示例代码:
```python
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
# 定义双高斯分布函数
def bimodal_gaussian(x, a1, b1, c1, a2, b2, c2):
return a1*np.exp(-(x-b1)**2/(2*c1**2)) + a2*np.exp(-(x-b2)**2/(2*c2**2))
# 生成样本数据
xdata = np.linspace(-5, 5, 100)
ydata = bimodal_gaussian(xdata, 1, -1, 1, 0.5, 1, 0.5) + np.random.normal(0, 0.05, 100)
# 对双高斯分布进行拟合
popt, pcov = curve_fit(bimodal_gaussian, xdata, ydata)
# 绘制拟合结果
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, bimodal_gaussian(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
在上面的代码中,我们首先定义了一个双高斯分布函数`bimodal_gaussian`,然后生成了样本数据`xdata`和`ydata`,并对其进行拟合。拟合结果存储在`popt`中,其中包含了函数的六个参数(a1, b1, c1, a2, b2, c2)的最优值。最后,我们使用matplotlib库将拟合结果绘制出来。
阅读全文