Обнаружение двух самых высоких пиков из гистограммы

Я пытался понять, как определить два пика из гистограммы. Может быть несколько, но мне нужно выбрать два самых высоких. В основном, что мне нужно, так это то, что, хотя у меня будут эти пики смещены влево или вправо, мне нужно их схватить. Их распространение может варьироваться, и их значения PEAK могут измениться, поэтому я должен найти способ получить эти два пика в Matlab.

То, что я сделал до сих пор, - создать 5-значное окно. Это окно заполняется значениями из гистограммы и выполняется сканирование. Каждый раз, когда я перемещаю 5 шагов вперед до следующего значения и сравниваю предыдущее значение окна с текущим. Что еще больше, сохраняется.

Есть ли лучший способ сделать это?

enter image description here

Ответы

Ответ 1

Возвращать данные из функции hist (или histc) в переменную (y = hist(x,bin);) и использовать PEAKFINDER Подача файлаExchange, чтобы найти локальные максимумы.

Я также использовал функцию PEAKDET от Эли Биллауэра. Прекрасно работает. Вы можете проверить мой ответ здесь с примером кода.

Ответ 2

Самый простой способ сделать это - сначала сгладить данные с помощью гауссового ядра, чтобы удалить высокочастотные вариации.

Затем используйте функцию localmax, чтобы найти локальные максимумы.