2016-05-10 4 views
0

J'essaie d'ajuster un nombre de gaussiennes de largeur fixe à un seul pic large. La seule façon que j'ai pu faire est avec peakfit.m. Les exemples de données peuvent être téléchargés here.La détection des pics donne des résultats différents lorsque l'on utilise octave ou oct2py en python

En octave le code que je l'utilise est:

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

Elles sont assez proches des trois pics I utilisés pour créer l'ensemble de données initial.

Ce sont les résultats lorsque j'utilise 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]]) 

Si je forme un seul pic dans les deux cas, le résultat est le même.

Octave

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

Où les différences pourraient provenir?

Répondre

1

J'ai trouvé la solution. Je dois passer les arguments dans oct2py comme flottants donc

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)