将Flattened Gaussian模型拟合到给定数据

问题描述 投票:2回答:1

我试图将一个非常复杂的(Flattened Gaussian)模型拟合到我获得的数据中。 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或您认为合适的任何其他模块来帮助我安装。 (像司仪一样)

python optimization scipy curve-fitting
1个回答
1
投票

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

plot

© www.soinside.com 2019 - 2024. All rights reserved.