Arhn - архитектура программирования

Как найти экземпляр до того, как в сигнале сформируется пик?

Я работаю с данными сигнала и пытаюсь найти экземпляр (или близкий к нему) до того, как начнет формироваться пик. Например:

Лучшие примеры

Красные звезды и оранжевые крестики в настоящее время рассчитываются с использованием scipy.signal.find_peaks, чтобы найти первый минимальный пик перед двумя пиками, превышающими 50 подряд. Идеальное место, которое я хочу, это область с красными звездами и вторым и третьим оранжевым крестиком.

Моя проблема в том, что иногда нет минимального значения прямо перед тем, как образуется первый горб, и это вызывает проблему, как с первым оранжевым x слева.

Что было бы лучшим методом или способом улучшить мой текущий метод, чтобы получить это место прямо перед тем, как образуется горб (приблизительное расположение стрелки):

введите здесь описание изображения

Мой текущий код выглядит примерно так, и он работает для синей и зеленой линий отдельно:

    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, который мне нужно учитывать.

Любая помощь будет принята с благодарностью.

11.07.2019

  • Может быть, вы ищете точку, где вторая производная наибольшая? 11.07.2019

Ответы:


1

Во-первых, давайте посмотрим на функцию scipy.signal.peak_widths. Не имея доступа к вашим данным, я использовал примерную кривую:

from scipy.signal import chirp, find_peaks, peak_widths
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 6 * np.pi, 1000)
x = np.sin(x) + 0.6 * np.sin(2.6 * x)

peaks, _ = find_peaks(x)
results_full = peak_widths(x, peaks, rel_height=1)
results_full[0]  # widths
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
plt.hlines(*results_full[1:], color="C3")
plt.show()

введите здесь описание изображения

Мы можем проанализировать результаты peak_widths , чтобы отбросить те значения, которые находятся внутри другой ширины.

peak_begin = np.array(results_full)
peak_begin = peak_begin[:, np.argsort( peak_begin[2] ) ] 
_, b = peak_begin.shape
width_to_delete = []
i= 1
while i < b:
    if peak_begin[2][i] < peak_begin[3][i-1]:
        peak_begin = np.delete(peak_begin,i,1)
        b = b-1
    else:
        i = i+1

plt.plot(x)
plt.hlines(*results_full[1:], color="r")
plt.plot(peaks, x[peaks], "x")
plt.plot(peak_begin[2], peak_begin[1], "o", color="g")
plt.show()

введите здесь описание изображения

Я надеюсь, что я получил то, что вы хотите достичь.

11.07.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..