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!