【问题标题】:Gaussian curve fitting高斯曲线拟合
【发布时间】:2021-10-14 15:37:06
【问题描述】:

我绘制了一个熵图。现在我想做一个曲线拟合,但我不明白如何启动这个过程。我使用scipycurve_fit 模块进行了尝试,但我得到的只是一条直线而不是高斯曲线。这是输出:

from scipy.optimize import curve_fit

x = [18,23,95,142,154,156,157,158,258,318,367,382,484,501,522,574,681,832,943,1071,1078,1101,1133,1153,1174,1264]
y = [0.179,0.179,0.692,0.574,0.669,0.295,0.295,0.295,0.387,0.179,0.179,0.462,0.179,0.179,0.179,0.179,0.179,0.179,0.179,0.179,0.179,0.462,0.179,0.387,0.179,0.295]

x = np.asarray(x)
y = np.asarray(y)

def Gauss(x, A, B):
    y = A*np.exp(-1*B*x**2)
    return y


parameters_g, covariance_g = curve_fit(Gauss, x, y)

fit_A = parameters_g[0]
fit_B = parameters_g[1]

print(fit_A)
print(fit_B)

fit_y = Gauss(x, fit_A, fit_B)
plt.figure(figsize=(18,10))
plt.plot(x, y, 'o', label='data')
plt.plot(x, fit_y, '-', label='fit')
plt.legend()
plt.show()

我刚刚使用样条连接了这些值并得到了这种曲线:

谁能建议我如何将这条曲线拟合成高斯曲线?

编辑 1:现在我有了条形图(有点),其中我有相应 x 值的 y 值。我的 x 轴范围从 0 到 1273,y 轴范围从 0 到 1。我怎样才能进行曲线拟合?这里的正确曲线是什么?我试图为给定数据拟合双峰曲线分布。您可以从这里找到数据。

条形图图片:https://i.stack.imgur.com/1Awt5.png

数据:https://drive.google.com/file/d/1_uiweIWRWgzy5wNVLOvn4WN25jteu8rQ/view?usp=sharing

【问题讨论】:

    标签: python numpy matplotlib gaussian curve


    【解决方案1】:

    你没有一条线,你确实有一条高斯曲线(因为你对高斯的定义,以零为中心)。当您以不同的比例绘制函数时,您可以清楚地看到:

    x_arr = np.linspace(-2,2,100)
    fit_y = Gauss(x_arr, fit_A, fit_B)
    plt.figure(figsize=(18,10))
    plt.plot(x_arr, fit_y, '-', label='fit')
    plt.legend()
    plt.show()
    

    该图像是使用您的代码中估计的 fit_A == fit_B == 1 制作的。

    您可以通过以下方式添加不同的初始猜测,从而得出不同的结果:

    parameters_g, covariance_g = curve_fit(Gauss, x, y, p0=(1,1/1000))
    

    但我会说您的数据并没有通过高斯曲线很好地描述。

    我会推荐的一件事是手动设置这些值以查看它对情节的影响。这样一来,您就可以感觉到您尝试自动化的任务是否是现实的。

    【讨论】:

    • 非常感谢您的帮助。我想就已经提出的问题提出另一个问题。当我绘制我的数据时,我可以获得一个条形图(有点)来获取特定位置的熵值。另外,我有相应的 x 和 y 值的数据。我该如何或在此图上进行曲线拟合的正确方法是什么?请检查我对上述问题的“编辑 1”
    • sry 这不是这里的代码创建机器... allays 自己尝试一下,如果它不起作用,请提出具体问题。
    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 2012-06-12
    • 2018-07-23
    • 1970-01-01
    • 2022-01-26
    • 2017-11-12
    • 2020-12-14
    • 2016-10-30
    相关资源
    最近更新 更多