python 双高斯拟合
时间: 2023-09-12 18:12:34 浏览: 187
双高斯拟合是一个常见的曲线拟合方法,它可以用来对具有双峰分布的数据进行拟合。Python中有很多库可以实现双高斯拟合,这里介绍一下使用scipy库实现双高斯拟合的方法。
首先,需要安装scipy库。可以使用以下命令进行安装:
```
pip install scipy
```
然后,使用下面的代码示例进行双高斯拟合:
```python
import numpy as np
from scipy.optimize import curve_fit
def bimodal(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))
# 生成数据
x = np.linspace(0, 10, 100)
y = bimodal(x, 1, 4, 0.5, 0.5, 7, 1)
# 添加噪声
np.random.seed(0)
y_noise = 0.2 * np.random.normal(size=x.size)
y += y_noise
# 进行拟合
p0 = [1, 3, 1, 0.5, 6, 1]
coeff, _ = curve_fit(bimodal, x, y, p0=p0)
# 绘制拟合结果
import matplotlib.pyplot as plt
plt.plot(x, y, 'b-', label='data')
plt.plot(x, bimodal(x, *coeff), 'r-', label='fit')
plt.legend()
plt.show()
```
其中,bimodal函数定义了双高斯函数的形式,x为自变量,a1、b1、c1、a2、b2、c2为拟合参数,需要通过curve_fit函数进行拟合。p0为初始化参数,可以根据数据的特点进行调整。
运行以上代码,即可得到拟合结果。
阅读全文