一维数据高斯拟合
时间: 2023-09-11 16:12:09 浏览: 123
一维数据的高斯拟合可以通过以下步骤实现:
1. 导入需要的库,如numpy、scipy等。
2. 准备一维数据,以numpy数组形式存储。
3. 使用scipy.optimize.curve_fit()函数进行高斯拟合。该函数需要传入两个参数,第一个参数是高斯分布函数,第二个参数是需要拟合的一维数据。高斯分布函数可以用以下代码定义:
```python
import numpy as np
from scipy.optimize import curve_fit
def gaussian(x, a, b, c):
return a * np.exp(-(x - b)**2 / (2 * c**2))
```
其中,a、b、c是高斯分布的三个参数,分别表示幅值、均值和标准差。
4. 得到拟合结果后,可以使用matplotlib库绘制一维数据和拟合曲线,以便进行可视化分析。
下面是一个完整的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 生成一维数据
x = np.linspace(-5, 5, 100)
y = 3 * np.exp(-(x - 1)**2 / (2 * 1.5**2)) + 2 * np.exp(-(x + 2)**2 / (2 * 0.8**2)) + np.random.normal(0, 0.1, 100)
# 定义高斯分布函数
def gaussian(x, a, b, c):
return a * np.exp(-(x - b)**2 / (2 * c**2))
# 进行高斯拟合
popt, pcov = curve_fit(gaussian, x, y)
# 绘制一维数据和拟合曲线
plt.scatter(x, y, label='data')
plt.plot(x, gaussian(x, *popt), 'r', label='fit')
plt.legend()
plt.show()
```
该例子中,我们使用了两个高斯分布函数拟合了一维数据,并且在绘制图像时用不同颜色的点表示了原始数据和用红色曲线表示了拟合结果。
阅读全文