我想问一个关于使用 matplotlib 和 numpy 找到一组峰值的最大值的问题。
我得到了包含峰值的数据,并要求我计算一组峰值的最大值。
下面是峰顶的图片。
我发现了该find_peaks
方法并尝试使用它来解决问题。
我在 Jupyter 中编写了以下代码块:
%pylab inline
from scipy.signal import find_peaks
testdata = loadtxt("testdata.dat", usecols=(0,1))
testdata_x = testdata[100:200,0]
testdata_y = testdata[100:200,1]
plot(testdata_x, testdata_y)
show()
peaks = find_peaks(testdata_y)
peaks
但是,我得到以下输出peaks
:
(array([ 7, 12, 36, 40, 65, 69, 93, 97]), {})
我不明白为什么我得到上述输出并且正在努力寻找解决方案。
我还尝试通过以下内容:
peaks = find_peaks(testdata_y, testdata_x)
但这无济于事。
我怎样才能解决这个问题?
如有必要,我已在此处附加数据文件作为下载链接(托管在 filehosting.org 上)
就像评论所说,返回的值find_peaks
是峰值的索引(或位置)。
要找到这些峰值的值,请使用峰值索引从 中获取值testdata_y
。然后你可以得到最大值。
%pylab inline
from scipy.signal import find_peaks
testdata = loadtxt("testdata.dat", usecols=(0,1))
testdata_x = testdata[100:200,0]
testdata_y = testdata[100:200,1]
plot(testdata_x, testdata_y)
show()
peaks = find_peaks(testdata_y)
peak_values = testdata_y[peaks[0]]
max_peak = max(peak_values)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句