curve_fit拟合高斯函数
时间: 2023-09-10 16:04:45 浏览: 152
使用 `scipy.optimize.curve_fit` 可以拟合高斯函数。
首先,导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
```
然后,定义高斯函数:
```python
def gaussian(x, a, b, c):
return a * np.exp(-(x - b)**2 / (2 * c**2))
```
其中,参数 `a` 是高斯函数的峰值,参数 `b` 是高斯函数的中心位置,参数 `c` 是高斯函数的标准差。
接着,生成一些数据并添加一些噪声:
```python
xdata = np.linspace(-5, 5, 500)
ydata = gaussian(xdata, 1, 0, 1) + 0.2 * np.random.normal(size=len(xdata))
```
使用 `curve_fit` 进行拟合:
```python
popt, pcov = curve_fit(gaussian, xdata, ydata)
```
其中,`popt` 是拟合后的参数值,`pcov` 是协方差矩阵。
最后,绘制拟合结果:
```python
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, gaussian(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def gaussian(x, a, b, c):
return a * np.exp(-(x - b)**2 / (2 * c**2))
xdata = np.linspace(-5, 5, 500)
ydata = gaussian(xdata, 1, 0, 1) + 0.2 * np.random.normal(size=len(xdata))
popt, pcov = curve_fit(gaussian, xdata, ydata)
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, gaussian(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
阅读全文