def bpm_fit(a, p):
if a is None:
return None
x = a['channel']['data'][p][:, 1]
y = a['channel']['data'][p][:, 2]
ar = np.trapz(y / np.sum(y) * len(y), x)
mean = np.mean(x * y / np.sum(y) * len(y))
rms = np.std(x * y / np.sum(y) * len(y))
popt, pcov = curve_fit(gaussian, x, y, p0=[ar, mean, rms])
return [popt, np.sqrt(pcov.diagonal())]
评论列表
文章目录