首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到离山顶最近的Minima

找到离山顶最近的Minima
EN

Stack Overflow用户
提问于 2019-06-28 16:14:26
回答 1查看 522关注 0票数 0

我使用scipy.singal.find_peaks查找峰值和最小值,使用:

代码语言:javascript
复制
import numpy as np
from scipy.signal import find_peaks

x=np.array([9.8,57.,53.,37.,24.,19.,16.,15.,13.,13.,12.,12.,11.,11.,11.,11.,11.,11.,10.,13.,13.,13.,15.,13.,12.,14.,15.,14.,51.,34.,24.,20.,24.,22.,18.,57.,63.,38.,27.,28.,31.,33.,94.,71.,48.,40.,43.,39.,31.,27.,22.,21.,20.,19.,18.,18.,19.,20.,20.,49.,62.,48.,43.,34.,33.,28.,26.,26.,24.,23.,23.,26.,27.,70.,97.,57.,46.,68.,82.,59.,49.,37.,40.,45.,36.,33.,28.,22.,23.,284.,524.,169.,111.,148.,98.,68.,50.,38.,30.,28.])
peaks, _ = find_peaks(x)
mins, _ =find_peaks(x*-1)

看上去像是:

现在,我感兴趣的是找到最接近每个峰值的最小值。这样我就能接受他们之间的区别了。

在查看了find_peaks文档之后,peak_prominece的论点似乎就是我要找的东西。

代码语言:javascript
复制
prominences = peak_prominences(x, peaks)[0]
contour_heights = x[peaks] - prominences

然后看起来是:

经过检查,peak_prominences发现了峰值之前的最小值。对于我的应用程序,我想要最近的峰值,不管它是在前面还是后面。

如何使用mins来定义peak_prominence计算的参数wlen。?

由于mins包含极小值的索引,我如何使用它来定义wlen?基本上,我必须找到约束每个峰值的指数(即peaks[i])。

是否有更好的方法可以通过使用minspeaks来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-28 20:32:13

现在,我感兴趣的是找到最接近每个峰值的最小值。这样我就能接受他们之间的区别了。

下面是你要找的东西吗?

代码语言:javascript
复制
closest_mins = [mins[np.argmin(np.abs(x-mins))] for x in peaks]
difference = x[peaks]-x[closest_mins]
print(difference)

47.3. 1.37。4. 45。54.3. 44。51.36.8. 413。37.

下面是用虚线表示的peaksminspeaks-closest mins对的图。请注意,有一些mins最接近多个peaks

代码语言:javascript
复制
plt.plot(x)
plt.plot(peaks, x[peaks],'o', label = 'peaks')
plt.plot(mins, x[mins],'s', label = 'mins')
plt.plot(closest_mins, x[closest_mins],'*', label = 'closest mins')

for p, m in zip(peaks, closest_mins):
    plt.plot([p,m], [x[p], x[m]], 'k', dashes = (4,1))
plt.legend();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56810147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档