Создание гауссовой подгонки - PullRequest
0 голосов
/ 04 августа 2020

Приведенный выше сценарий создает линейный график из моего набора данных. Теперь я пытаюсь добавить гауссовский профиль с помощью алгоритма подбора к изображению. Во втором сценарии я попытался создать алгоритм для этого, используя информацию, которую я нашел в Интернете, но я получаю ошибки и не понимаю. Любые решения?

Используется ссылка на набор данных

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

Изображение линейного графика

...