Приведенный выше сценарий создает линейный график из моего набора данных. Теперь я пытаюсь добавить гауссовский профиль с помощью алгоритма подбора к изображению. Во втором сценарии я попытался создать алгоритм для этого, используя информацию, которую я нашел в Интернете, но я получаю ошибки и не понимаю. Любые решения?
Используется ссылка на набор данных
import matplotlib.pyplot as plt
import numpy as np
X, Y = [], []
X = np.zeros((10, 4096))
Y = np.zeros((10, 4096))
n=0
m=0
for line in open('data_set2.txt', 'r'):
values = [float(s) for s in line.split()]
X[n,0] = values[0]-1566518691968
for m in range(4096):
Y[n,m]=values[m+1]
n=n+1
plt.plot(Y[1,0:4095])
plt.show()
import matplotlib.pyplot as plt
from numpy import exp, loadtxt, pi, sqrt
from scipy.optimize import curve_fit
import numpy as np
data = loadtxt('data.txt')
x, y = [], []
x = np.zeros((10, 4096))
y = np.zeros((10, 4096))
mean=2.1
stdv = 14.5 #standard deviation
def gauss(x, amp, cen, wid):
return (amp / (sqrt(2*pi) * wid)) * exp(-(x-cen)**2 / (2*wid**2))
popt,pcov = curve_fit(gauss,amp=50,cen=20,p0=[45,mean,sdv])
plt.xlabel('Time(milliseconds)')
plt.ylabel('Counts')
plt.show()
plt.plot(x,gauss(x,*popt))
Изображение линейного графика