2016-05-10 7 views
0

Я пытаюсь подгонять число гауссиан с фиксированной шириной до одного широкого пика. Единственный способ, которым я смог это сделать, - peakfit.m. Пример данных можно загрузить here.Распознавание пика дает разные результаты при использовании октавы или oct2py в python

В октаве код, который я использую:

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