将扁平高斯模型拟合到给定数据

时间:2019-04-20 23:17:42

标签: python optimization scipy curve-fitting

我正在尝试将非常复杂的(平顶高斯)模型拟合到我获得的数据中。 Image for flattened Gaussian formula (我的代码中的变量fc表示vo,中心频率。)

我已经使用来自scipy.optimize import curve_fit的python代码编写了代码。 它无法优化方程式,并且始终会为参数提供相同的答案。 链接到数据文件:https://www.filehosting.org/file/details/795968/my-file.dat

import numpy as np
from scipy.optimize import curve_fit

x    = np.loadtxt("my-file.dat")[:,0]
yres = np.loadtxt("my-file.dat")[:,1]
def flatgauss(x, A,fc,t,w):
    B= ((4*(x-fc)**2)/ w**2 ) * np.log((-1/t)*np.log((1+ np.exp(-t))/2))
    return -A*( (1-np.exp(-t*np.exp(B)))/ (1-np.exp(-t)) )
popt, pcov = curve_fit(flatgauss, x, yres)
print ("fitted parameters:", popt)

这是我得到的: OptimizeWarning:无法估计参数的协方差   category = OptimizeWarning) 拟合参数:[1。 1. 1. 1。]

请使用scipy或您认为不错的任何其他模块来帮助我进行安装。 (如司仪)

1 个答案:

答案 0 :(得分:1)

scipy的curve_fit例程的默认初始参数估计值均为1.0,并且由于无法对这些估计值进行任何改进,因此将其返回并给出“拟合参数:[1.1.1.1。]”。如果您查看如下所示的数据散点图,则发布的数据并不位于平坦的高斯峰或任何其他的preak方程式上,因此curve_fit在您使用的方程式上失败。

plot