Я пытаюсь использовать 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, чтобы получить соответствующие временные метки.
Буду очень признателен за любые указатели !!