2016-05-31 4 views
-2

Matplotlibを使用してnumpy.ndarray(長さ1400)をプロットします。私は "ピーク"を検出し、 "ピークではない"とピーク時のy値との間に0.1のような関数を作りたいと思う。ヒストグラムデータを使用する確率密度関数

例チャート:

enter image description here

+0

"ピーク" を定義します。 'y [i]> max(y [i-1]、y [i + 1])'なら 'y [i]'はピークですか? – Eric

+0

@エリックそれらのすべてではありません - それらの短い範囲、より大きなもののみ。 –

+0

私はEricに同意します:まずあなたの問題/質問の明確な定義をします。たとえばpeakは15より大きいすべての場合、Pythonで1つのライナーとして解を書くことができます。あなたが魅力的なピーク検出アルゴリズムを必要とするならば、事態はもっと複雑になる可能性があります。 – Bart

答えて

0

あなたのデータにDetectPeaksを適用します。二次微分を計算し、あなたのmpd、mph設定に関して決定してください。

first_derivative = np.gradient(data) 
second_derivative = np.gradient(first_derivative) 
ind = detect_peaks(second_derivative, mpd=20,mph=0, show=True) 
print(ind) 

そして、0または最大値のいずれかを使用して配列を埋める---

arr = [] 

for i in range(0,len(n_test)): 
    for j in ind: 
     if i == j: 
      arr.append(n_test[i]) 
    arr.append(0) 


plt.plot(arr) 

最後に、他のピーク検出オプションをチェックアウト - peak detection overview

関連する問題