0
Задача состоит в том, чтобы установить некоторые фрагменты (cand_peaks_xs) диапазона данных (X и Y) с гауссовой кривой. Проблема в том, что результат является линейным.python curve_fit возвращает строки
for i in cand_peaks_xs:
# approximate gauss
x = X[i[0]:i[1]]
y = Y[i[0]:i[1]]
try:
mean = numpy.mean(x)
sigma = numpy.std(x)
param, cov = curve_fit(self.gauss, x, y, p0=[y.max(), mean, sigma])
self.ax1.plot(x, self.gauss(x, *param), c='r')
except:
pass
Красные линии здесь, что я получаю с этой программой.
Это определение Гс
def gauss(self, x, a, x0, sigma):
return a*exp(-(x-x0)**2/(2*sigma**2))
Как бы вы определили 'self.gauss'? – Ffisegydd
Кроме того, как и в сторону, похоже, что вы делаете какой-то дифракционный анализ. Возможно, уточнение Rietveld или такое? Вы можете быть заинтересованы в http://www.diffpy.org/, это пакет Python, предназначенный для выполнения дифракционного анализа (игнорируйте меня, если я ошибаюсь: P) – Ffisegydd
Я добавил определение. Как насчет вашего совета, я посмотрю, спасибо – Leonid