python拟合双峰高斯分布
时间: 2023-10-01 07:10:18 浏览: 472
要拟合双峰高斯分布,可以使用SciPy库中的curve_fit函数。这个函数可以用来拟合任意的函数,只需要提供一个函数表达式和数据。下面是一个Python代码示例:
```python
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
# 定义双峰高斯分布函数
def double_gaussian(x, a1, mu1, sigma1, a2, mu2, sigma2):
return a1*np.exp(-(x-mu1)**2/(2*sigma1**2)) + a2*np.exp(-(x-mu2)**2/(2*sigma2**2))
# 生成测试数据
x = np.linspace(-10, 10, 1000)
y = double_gaussian(x, 1, -2, 1, 0.5, 2, 0.5) + 0.1*np.random.randn(len(x))
# 拟合双峰高斯分布
popt, pcov = curve_fit(double_gaussian, x, y)
# 绘制拟合结果
plt.plot(x, y, 'b-', label='data')
plt.plot(x, double_gaussian(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
在这个示例中,我们先定义了一个双峰高斯分布函数double_gaussian。然后生成了一些测试数据,加上一些随机噪声。最后使用curve_fit函数拟合了这些数据,得到了拟合参数popt和协方差矩阵pcov。最后绘制了原始数据和拟合结果的图形。
你可以根据自己的实际需求修改代码中的函数表达式和测试数据,来拟合不同的双峰高斯分布。
阅读全文