对X,Y进行多点高斯一维拟合的python代码怎么写
时间: 2024-02-07 15:02:02 浏览: 136
2d_gaussian_fit:用于 2D 高斯拟合的 Python 代码,从 scipy 食谱修改而来
以下是一维高斯拟合的Python代码:
```python
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
def gaussian(x, amp, cen, wid):
return amp * np.exp(-(x - cen)**2 / wid)
# 构造测试数据
x = np.linspace(-10, 10, 101)
y = gaussian(x, 2, 0, 1) + np.random.normal(0, 0.1, 101)
# 进行高斯拟合
popt, pcov = curve_fit(gaussian, x, y)
# 输出拟合参数
print(popt)
# 绘制拟合结果
plt.plot(x, y, 'bo', label='data')
plt.plot(x, gaussian(x, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
这里使用了`scipy`库中的`curve_fit`函数进行高斯拟合。其中`gaussian`函数是自定义的高斯函数,其中`amp`代表高斯函数的幅值,`cen`代表高斯函数的中心,`wid`代表高斯函数的宽度。
如果要进行多点高斯拟合,可以将$x$和$y$分别变成二维数组,其中每一行代表一个数据点的$x$和$y$值。然后可以使用循环或者`map`函数对每个维度进行高斯拟合。
阅读全文