小编Roc*_*cky的帖子

适合python中的数据的多个高斯

我只是想知道是否有一种简单的方法来实现高斯/洛伦兹拟合到10个峰值并提取fwhm并且还确定fwhm在x值上的位置.复杂的方法是分离峰值并拟合数据并提取fwhm.

数据为[ https://drive.google.com/file/d/0B6sUnnbyNGuOT2RZb2UwYXU4dlE/view?usp=sharing].

任何建议非常感谢.谢谢.

from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('data.txt', delimiter=',')
x, y = data

plt.plot(x,y)
plt.show()

def func(x, *params):
    y = np.zeros_like(x)
    print len(params)
    for i in range(0, len(params), 3):
        ctr = params[i]
        amp = params[i+1]
        wid = params[i+2]
        y = y + amp * np.exp( -((x - ctr)/wid)**2)



guess = [0, 60000, 80, 1000, 60000, 80]
for i in range(12):
    guess += [60+80*i, 46000, 25]


popt, pcov = …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

numpy ×1

python ×1

scipy ×1