Gaußsche Passform für Python

Ich versuche, einen Gauß'schen Wert für meine Daten festzulegen (der bereits ein grober Gauß'scher Wert ist). Ich habe den Rat von denen hier schon genommen und ausprobiertcurve_fit undleastsq aber ich denke, dass mir etwas grundlegenderes fehlt (da ich keine Ahnung habe, wie ich den Befehl verwenden soll). Hier ist ein Blick auf das Drehbuch, das ich bisher habe

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()

Was ich daraus erhalte, ist eine Gaußsche Form, die meine ursprünglichen Daten sind, und eine gerade horizontale Linie.

Außerdem möchte ich mein Diagramm mit Punkten zeichnen, anstatt sie miteinander zu verbinden. Jede Eingabe wird geschätzt!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage