Гауссово подходит для Python
Я пытаюсь установить гауссовский для моих данных (который уже является грубым гауссовским). Я уже принял совет тех, кто здесь и попробовалcurve_fit
а такжеleastsq
но я думаю, что мне не хватает чего-то более фундаментального (поскольку я понятия не имею, как использовать команду). Вот посмотрите на сценарий, который я до сих пор
import pylab as plb
import matplotlib.pyplot as plt
# Read in data -- first 2 rows are header in this example.
data = plb.loadtxt('part 2.csv', skiprows=2, delimiter=',')
x = data[:,2]
y = data[:,3]
mean = sum(x*y)
sigma = sum(y*(x - mean)**2)
def gauss_function(x, a, x0, sigma):
return a*np.exp(-(x-x0)**2/(2*sigma**2))
popt, pcov = curve_fit(gauss_function, x, y, p0 = [1, mean, sigma])
plt.plot(x, gauss_function(x, *popt), label='fit')
# plot data
plt.plot(x, y,'b')
# Add some axis labels
plt.legend()
plt.title('Fig. 3 - Fit for Time Constant')
plt.xlabel('Time (s)')
plt.ylabel('Voltage (V)')
plt.show()
Из этого я получаю гауссовскую форму, которая является моими исходными данными, и прямую горизонтальную линию.
Кроме того, я хотел бы построить свой график, используя точки, а не соединяя их. Любой вклад приветствуется!