поиск пиковых значений и соответствующих временных меток - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь использовать scipy для определения пиков моих сигналов и пытаюсь получить соответствующие временные метки этих пиков. Б scipy.signal.find_peaks (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.find_peaks.html)

)

У меня есть большой файл данных с data (Numpy ndarray), который содержит все значения сигналов с частотой дискретизации 200, и times со всеми соответствующими номерами выборок каждого сигнала.

Чтобы получить фрагмент данных,

# len(data[0]) is 1028721
data[0] = array([0.00333048, 0.00333095, 0.00333494, ..., 0.0062428 , 0.00624095,
       0.00624318])

# len(times) is 1028721
times = array([0.000000e+00, 5.000000e-03, 1.000000e-02, ..., 5.143590e+03,
       5.143595e+03, 5.143600e+03])

До сих пор я получал пиковые очки (в основном из скучных примеров), используя:

import matplotlib.pyplot as plt
from scipy.signal import find_peaks, peak_prominences
peaks, properties = find_peaks(data[0], height=None, distance = 200)

plt.plot(data[0])
plt.plot(peaks, data[0][peaks], "x")

Если я нанесу на карту вышеупомянутое, я получу кучу отметок «х» на пиковых точках, и это здорово до сих пор. Однако, когда я пытаюсь получить значения каждого пика, если я делаю peaks или properties, peaks возвращает индекс, который я не знаю, как он был получен, а свойства - это просто пустой словарь.

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

В идеале я думал о том, чтобы получить peaks[0] или properties['height'], возвращающих мне значения сигнала.

Затем мне было интересно, как я могу сопоставить эти пиковые точки с исходным times ndarray, чтобы получить соответствующие временные метки.

Буду очень признателен за любые указатели !!

...