0

嗨,我是编程新手,在我的一生中,我似乎无法弄清楚如何将高斯拟合到我的数据中。这是我目前拥有的。任何帮助将不胜感激!

from numpy import *
import matplotlib.pyplot as plt

data = loadtxt("/home/*****")

t,q = data[:,2], data[:,3]                         
t,q = loadtxt("/home/*****", usecols = (2,3), unpack=True)

plt.scatter(t,q, marker='.', s=20)
plt.show()
4

2 回答 2

0

您当前绘制散点图。文档有一个用于绘制直方图的演示,它可能是高斯的,具体取决于数据的分布。你需要类似的东西

plt.hist(x, 50, normed=1, histtype='stepfilled')

这里有更多的演示

于 2013-07-29T22:07:12.897 回答
0

你可以看看astropy.modeling。他们网站上的高斯拟合示例:

import numpy as np
from astropy.modeling import models, fitting

# Generate fake data
np.random.seed(0)
x = np.linspace(-5., 5., 200)
y = 3 * np.exp(-0.5 * (x - 1.3)**2 / 0.8**2)
y += np.random.normal(0., 0.2, x.shape)

# Fit the data using a box model
t_init = models.Trapezoid1D(amplitude=1., x_0=0., width=1., slope=0.5)
fit_t = fitting.LevMarLSQFitter()
t = fit_t(t_init, x, y)

# Fit the data using a Gaussian
g_init = models.Gaussian1D(amplitude=1., mean=0, stddev=1.)
fit_g = fitting.LevMarLSQFitter()
g = fit_g(g_init, x, y)

# Plot the data with the best-fit model
plt.figure(figsize=(8,5))
plt.plot(x, y, 'ko')
plt.plot(x, t(x), 'b-', lw=2, label='Trapezoid')
plt.plot(x, g(x), 'r-', lw=2, label='Gaussian')
plt.xlabel('Position')
plt.ylabel('Flux')
plt.legend(loc=2)
于 2015-01-29T16:52:07.347 回答