Обнаружение пиков дает разные результаты при использовании octave или oct2py в Python
Я пытаюсь подогнать ряд гауссианов фиксированной ширины к одному широкому пику. Единственный способ, которым я смог это сделать, - это использовать peakfit.m. Пример данных можно скачать здесь.
В октаве код, который я использую:
>>peakfit(data,90.5,3,3,11,0,0,0,0,[1,1,1],0,0)
ans =
1.0000e+000 9.0012e+001 1.0185e+004 1.0000e+000 1.0749e+004
2.0000e+000 9.0500e+001 9.3075e+003 1.0000e+000 9.9035e+003
3.0000e+000 9.0988e+001 1.0186e+004 1.0000e+000 1.0749e+004
Они довольно близки к трем пикам, которые я использовал для создания начального набора данных.
Это результаты, когда я использую oct2py
import oct2py as op
import numpy as np
data=np.loadtxt(file)
octave=op.Oct2Py()
octave.peakfit(data,90.5,3,3,11,0,0,0,0,[1,1,1],0,0)
#Out:
array([[ 1, 91, 8873, 1, 14583],
[ 2, 88, 17314, 1, 400],
[ 3, 90, 11011, 1, 18459]])
Если я подгоню один пик в обоих случаях, результат будет одинаковым.
октава
1.0000e+000 9.0500e+001 2.0576e+004 1.4670e+000 3.2130e+004
Oct2py
array([[ 1.00000000e+00, 9.05000004e+01, 2.05763986e+04,
1.46695147e+00, 3.21304879e+04]])
Откуда могут возникнуть различия?
1 ответ
Я нашел решение. Я должен передать аргументы в oct2py как плавает так
octave.peakfit(data,90.5,3.0,3.0,11.0,0.0,0.0,0.0,0.0,[1.0,1.0,1.0],0.0,0.0)