Нахождение пиков выше порога - PullRequest
0 голосов
/ 25 февраля 2020

Я использую from scipy.signal import find_peaks. Можно ли найти все пики, превышающие указанный порог. Я не совсем уверен, если вы можете сделать это. Например: indices = find_peaks(s_volts, threshold= 0.5*maxPeak) Я пытаюсь найти все пики, которые превышают 50% максимального пика.

1 Ответ

2 голосов
/ 25 февраля 2020

Не думайте, что есть встроенный способ сделать это. Вот как вы можете go об этом без scipy:

from scipy.signal import find_peaks
import numpy as np
x = np.array([1,2,3,2,1,2,3,2,1,2,3,4,3,2,1,2,3,4,7,4,3,2,1])
peaks_indices = find_peaks(x)[0]
peaks = np.array(list(zip(peaks_indices, x[peaks_indices])))
threshold = 0.5 * max(x[peaks_indices])
filtered_peaks = [(index, value) for index, value in peaks if value > threshold]

# If you just want the indices:
filtered_peaks_indices = [index for index, value in peaks if value > threshold]

# Or just want the values
filtered_peaks_values = [value for index, value in peaks if value > threshold]

# Visualize
from matplotlib import pyplot as plt
plt.plot(range(len(x)), x)
for index in peaks_indices:
     plt.axvline(index)

plt.axhline(threshold)
plt.scatter(filtered_peaks_indices, filtered_peaks_values, s=200)
plt.show()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...