Я работаю с данными сигнала и пытаюсь найти экземпляр (или близкий к нему) до того, как пик начинает формироваться. Например:
![Peak examples](https://i.stack.imgur.com/npufa.png)
Красные звезды и оранжевые x в настоящее время рассчитываются с использованием scipy.signal.find_peaks, чтобы найти первый минимальный пик перед двумя пиками, превышающими 50 подряд. Идеальное место, которое я хочу, это район с красными звездами, вторым и третьим оранжевым x.
Моя проблема в том, что иногда не существует минимального значения прямо перед тем, как формируется первый горб, и это вызывает проблему, как с первым оранжевым x слева.
Что может быть лучшим методом или способом улучшить мой текущий метод, чтобы получить это место прямо перед тем, как образуется горб (грубое расположение стрелки):
![enter image description here](https://i.stack.imgur.com/j7VA9.png)
Мой текущий код выглядит примерно так и работает отдельно для синей и зеленой линий:
step_peak, _ = find_peaks(z, height=60, distance=40)
step_min, _ = find_peaks(-1*z, height=-60)
contact = []
for i in range(len(step_peak)-1):
if step_peak[i+1] - step_peak[i] < 100:
for min in reversed(step_min):
if min < step_peak[i]:
contact.append(min)
break
Этот метод работает для примерно 90% всего набора данных, только некоторые из них заканчиваются как первый оранжевый x, который мне нужно учитывать.
Любая помощь будет принята с благодарностью.