Я использую scipy.singal.find_peaks
, чтобы найти пики и минимы, используя:
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
выглядит так, как я ищу.
prominences = peak_prominences(x, peaks)[0]
contour_heights = x[peaks] - prominences
Что выглядит следующим образом:
После проверки peak_prominences
обнаружил минимум, предшествующий пику.Для моего приложения мне нужен ближайший пик, независимо от того, предшествовал он или следовал.
Как я могу использовать mins
, чтобы определить параметр wlen
для вычисления peak_prominence
.?
Поскольку mins
состоит из индексов минимумов, как я могу использовать его для определения wlen
?Я бы в основном должен был найти индексы в мин, которые ограничивают каждый пик (то есть peaks[i]
).
Есть ли лучший способ добиться этого, просто используя mins
и peaks
?