2014-01-20 4 views
2

Задача здесь состоит в том, чтобы найти количество локальных максимумов (диапазона) или минимумов от вектора. Я знаю, как найти локальные максимумы/локальные минимумы (одна точка из графика), однако локальные максимы теперь сгруппированы вместе в вектор.Поиск количества локальных максимумов/локальных минимумов (диапазона) от вектора в C++

Чтобы дать более четкое представление, черчения из значений из вектора будет производить что-то похожее на это:

enter image description here

Проще говоря, я хочу, чтобы найти число пиков. В этом случае 6. Однако пики не являются одной точкой и диапазоном значений. Как я могу найти количество пиков (диапазон локальных максимумов) из вектора?

Будет очень благодарен, если могут быть некоторые псевдокоды, примеры кода, если нет, предложения также будут оценены. Я использую Visual Studio C++, наряду с QWT, QT и OpenCV для этого проекта.

+1

У всех максимумов примерно одинаковое значение? Существует ли минимальная длина диапазона для максимумов? Например, не малый пик после первого (имеющий значение 0,25) считается максимумом? –

+0

Я хочу избежать этих маленьких пиков, чтобы считаться максимумами. Одна из моих идей - добавить условие. Условие будет таким, что если значение будет ниже определенного числа, оно не будет считаться максимумом. Как я планирую получить определенное число: (сумма ненулевых значений в векторе)/(общее количество ненулевых значений в векторе). – rockinfresh

+0

Кроме того, все максимы имеют примерно одинаковое значение. – rockinfresh

ответ

0

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

Вам необходимо отфильтровать диапазоны, которые являются двумя небольшими.

+0

Спасибо за помощь (: – rockinfresh

+1

Удовольствие мое :) –

Смежные вопросы