写一个python高斯函数拟合多个谱峰的代码
时间: 2023-09-13 19:03:33 浏览: 234
这里提供一个基于Scipy库的高斯函数拟合的代码,可以适用于多个谱峰的情况:
```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 和 y 分别表示自变量和因变量
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([0.2, 0.8, 1.5, 2.2, 3.5, 4.8, 7.2, 5.5, 3.5, 1.5])
# 预估初始参数
mean = sum(x*y) / sum(y)
sigma = np.sqrt(sum(y * (x - mean)**2) / sum(y))
amp = max(y)
# 定义初始参数列表
p0 = [amp, mean, sigma]
# 拟合
popt, pcov = curve_fit(gaussian, x, y, p0=p0)
# 输出拟合结果
print("a =", popt[0], "b =", popt[1], "c =", popt[2])
```
这里的代码是针对一个包含10个数据点的x和y数组进行高斯函数拟合。其中,自变量x表示谱峰位置,因变量y表示谱峰的强度。可以根据具体情况修改x和y的数值。拟合的过程中,需要预估初始参数,即谱峰的中心位置、标准差和峰值。这里采用了一些简单的计算方法来预估初始参数,具体可根据情况进行修改。最后,输出拟合结果。
阅读全文