首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高斯数据的三项高斯拟合(python)

高斯数据的三项高斯拟合(python)
EN

Stack Overflow用户
提问于 2017-04-05 16:27:39
回答 1查看 154关注 0票数 0

我正在尝试将高斯数据拟合到特定的三项高斯(其中一项的振幅等于下一项的标准差的两倍)。这是我的尝试:

代码语言:javascript
复制
import numpy as np

#from scipy.optimize import curve_fit
import scipy.optimize as optimize

import matplotlib.pyplot as plt

#r=np.linspace(0.0e-15,4e-15, 100) 

data = np.loadtxt('V_lambda_n.dat')
r = data[:, 0]
V = data[:, 1]

def func(x, ps1, ps2, ps3, ps4):
    return ps1*np.exp(-(x/ps2)**2) + ps2*np.exp(-(x/ps3)**2) + ps3*np.exp(-(x/ps4)**2)

popt, pcov = optimize.curve_fit(func, r, V, maxfev=10000)

#params = optimize.curve_fit(func, ps1, ps2, ps3, ps4)

#[ps1, ps2, ps2, ps4] = params[0]

p1=plt.plot(r, V, 'bo', label='data')
p2=plt.plot(r, func(r, *popt), 'r-', label='fit')

plt.xticks(np.linspace(0, 4, 9, endpoint=True))
plt.yticks(np.linspace(-50, 150, 9, endpoint=True))
plt.show()

结果如下:

如何修复此代码以提高拟合程度?谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-04-07 15:39:42

在来自scipy-user论坛的朋友的帮助下,我尝试了以下初步猜测:

p0=V.max()、std_dev、V.max()、2

合适性变得好多了。新的拟合如下所示

enter image description here

我希望配合度能变得更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43225835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档