Python高斯曲线拟合给出直线,提供y的幅度

时间:2017-06-06 19:56:39

标签: python scipy astropy

我试图将高斯分布拟合到我的一些数据中,数据描述密度随高度的变化。这是我到目前为止的代码:

import matplotlib.pyplot as plt
from astropy.modeling import models, fitting

x = heights
y = densities

#calculate fit parameters
n = len(x) #no. of obs
mean = sum(x*y)/n #average
sigma = sum(y*(x-mean)**2)/n #std dev
amplitude = max(y)

g_init = models.Gaussian1D(amplitude, mean, sigma)
fit_g = fitting.LevMarLSQFitter()
g = fit_g(g_init, x, y)

plt.plot(heights, densities)
plt.plot(x, g(x), label='Gaussian')

#plot labels

plt.xlabel("Height[km]")
plt.ylabel("Density")
plt.show()

然而,高斯的图只是一条直线。请帮我弄清楚如何纠正这个问题。我搜索了,问题似乎是它没有收敛,所以我提供幅度为max(y)..但它不起作用。提前致谢。

0 个答案:

没有答案