Нахождение максимальных значений набора локальных максимумов с использованием matplotlib и numpy - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу задать вопрос о поиске максимумов набора пиков, используя matplotlib и numpy.

Мне дали данные, содержащие пики, и попросили вычислить максимумы множества пиков.

Ниже приведено изображение пиков.

enter image description here

Я обнаружил find_peaks метод и попытался решить проблему с помощью этого.

Я написал следующий блок кода в Jupyter:

%pylab inline
from scipy.signal import find_peaks

testdata = loadtxt("testdata.dat", usecols=(0,1))
testdata_x = testdata[100:200,0]
testdata_y = testdata[100:200,1]
plot(testdata_x, testdata_y)
show()

peaks = find_peaks(testdata_y)
peaks

Однако я получаю следующий вывод для peaks:

(array([ 7, 12, 36, 40, 65, 69, 93, 97]), {})

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

Я также попытался передать следующее:

peaks = find_peaks(testdata_y, testdata_x)

, но это было безрезультатно.

Как я могу разобраться в этом вопросе?

Я прикрепил файл данных здесь для загрузки ссылка , если необходимо (хостинг на filehosting.org)

1 Ответ

1 голос
/ 17 февраля 2020

Как и в комментариях, значения, возвращаемые find_peaks, представляют собой индексы (или местоположения) пиков.

Чтобы найти значения этих пиков, используйте индексы пиков, чтобы получить значения из testdata_y. Тогда вы можете получить максимум.

%pylab inline
from scipy.signal import find_peaks

testdata = loadtxt("testdata.dat", usecols=(0,1))
testdata_x = testdata[100:200,0]
testdata_y = testdata[100:200,1]
plot(testdata_x, testdata_y)
show()

peaks = find_peaks(testdata_y)
peak_values = testdata_y[peaks[0]]
max_peak = max(peak_values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...