使用matplotlib和numpy查找一组局部极大值的最大值

2024-09-30 08:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想问一个关于使用matplotlib和numpy查找一组峰值的最大值的问题

我得到了包含峰值的数据,并被要求计算峰值集的最大值

下面是山峰的图片

enter image description here

我发现了find_peaksmethod,并试图用它来解决这个问题

我用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)

但这是徒劳的

我怎样才能解决这件事

如有必要,我已将数据文件附于此处作为下载link(hoestd on filehosting.org)


Tags: 数据代码fromnumpymatplotlib图片inlinejupyter
1条回答
网友
1楼 · 发布于 2024-09-30 08:18:15

正如注释所说,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)

相关问题 更多 >

    热门问题