簡體   English   中英

在python中使用octave或oct2py時,峰值檢測給出不同的結果

[英]Peak detection gives different results when using octave or oct2py in 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]])

差異從何而來?

我找到了解決方案。 我必須將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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM