2016-05-31 65 views
-2

使用Matplotlib绘制numpy.ndarray(长度1400)。我想要检测“峰”,并创建一个函数,使其在“不是峰”时为0.1,而在峰为峰时为y值。使用直方图数据的概率密度函数

实施例的图表:

enter image description here

+0

定义 “峰值”。如果y [i]> max(y [i-1],y [i + 1])''是'y [i]'峰吗? – Eric

+0

@Eric不是全部 - 它们的范围较小,只有较大的范围。 –

+0

我同意埃里克:首先明确你的问题/问题。如果例如峰值是大于15的一切,你可以把解决方案写成Python中的一行代码。如果你需要一些奇特的峰值检测算法,事情会变得更加复杂。 – 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

相关问题