簡體   English   中英

高斯數據的三項高斯擬合(p​​ython)

[英]Three-term gaussian fit to gaussian data (python)

我正在嘗試使高斯數據適合特定的三項高斯(其中一項的幅度等於下一項的標准偏差的兩倍)。 這是我的嘗試:

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()

結果如下:

在此處輸入圖片說明

如何修復此代碼以提高擬合度? 謝謝

在scipy-user論壇的朋友的幫助下,我嘗試了以下嘗試:

p0 = [V.max(),std_dev,V.max(),2]

適合度提高了很多。 新的擬合如下所示

在此處輸入圖片說明

我希望比以前更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM