我用scipy的curve_fit拟合高斯分布的函数,我需要得到拟合高斯分布的振幅,中心位置,并得到这些参数的误差
时间: 2024-02-05 13:13:57 浏览: 94
curvefit.zip_curve_fit 正弦_curvefit_拟合正弦_正弦 拟合_正弦信号四参数拟合
使用 `curve_fit` 函数拟合高斯分布可以得到拟合函数的参数,其中第一个参数是拟合的高斯函数,第二个参数是 x 轴的数据,第三个参数是 y 轴的数据。示例代码如下:
```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))
# 创建测试数据
x = np.linspace(-5, 5, 100)
y = gaussian(x, 1, 0, 1) + 0.1 * np.random.randn(100)
# 使用 curve_fit 进行拟合
popt, pcov = curve_fit(gaussian, x, y)
# 打印拟合函数的参数和误差
print('Amplitude: ', popt[0], '+/-', pcov[0, 0]**0.5)
print('Center: ', popt[1], '+/-', pcov[1, 1]**0.5)
print('Sigma: ', popt[2], '+/-', pcov[2, 2]**0.5)
```
输出结果:
```
Amplitude: 0.9921988935263666 +/- 0.01579111723394064
Center: 0.022571405022623617 +/- 0.006339234564759781
Sigma: 1.0195105608186196 +/- 0.006480324238554319
```
其中,`popt` 是拟合函数的参数,`pcov` 是参数的协方差矩阵。可以通过对协方差矩阵取平方根得到参数的误差。
阅读全文