2017-01-10 8 views
2

Позвольте мне объяснить быстро, что я намерен сделать: У меня есть этот тип диаграммы, и, конечно, все точки, чтобы построить его: Standard LineChart point Я бы на 3 самых высоких пиков на графике, а именно: Right point Алгоритм, который я реализовал при взятии этих точек, но они не являются точными ... wrong point как мог бы быть точный алгоритм?алгоритм для поиска самых высоких пиков указывает

Заранее спасибо тем, кто поможет мне

+4

Ваш алгоритм, как представляется, занимает три высшие точки вместо трех * локально * высших пиков. Попробуйте добавить условие, которое фильтрует точки и оставляет только точки, которые являются [локальными максимальными точками] (https://en.wikipedia.org/wiki/Maxima_and_minima#Definition) (что означает, что точка до и точка после них ниже). Затем запустите свой алгоритм так, как вы его реализовали. – alfasin

+1

Есть ли какие-либо ограничения на то, насколько близко друг к другу могут быть эти пики? Представьте себе, что во втором изображении точка в среднем красном круге будет немного ниже точки в левом красном круге. Вы все еще хотите вернуть левую и правую точку? –

+0

... Нет. Я бы хотел вернуть точки визуально выше, после чего произошел спешка (высокий-низкий). –

ответ

0

скажут п точки сохраняются в массиве a. имеют второй массив b размера 3 со всеми входами, инициализированными в 0. начните сканирование массива. Как только [i] < a [i-1], найдите min (a [i-1], a [b [0]], a [b [1]], a [b [2]]) ; если min не является [i-1], то он будет [b [j]] для j = 0, 1 или 2; затем установите в b [j] = i-1. В конце цикла по всей точке b [0], b [1] и b [3] должны быть индексами точек, которые являются тремя локальными максимумами.