Обнаружение двух самых высоких пиков из гистограммы
Я пытался понять, как определить два пика из гистограммы. Может быть несколько, но мне нужно выбрать два самых высоких. В основном, что мне нужно, так это то, что, хотя у меня будут эти пики смещены влево или вправо, мне нужно их схватить. Их распространение может варьироваться, и их значения PEAK могут измениться, поэтому я должен найти способ получить эти два пика в Matlab.
То, что я сделал до сих пор, - создать 5-значное окно. Это окно заполняется значениями из гистограммы и выполняется сканирование. Каждый раз, когда я перемещаю 5 шагов вперед до следующего значения и сравниваю предыдущее значение окна с текущим. Что еще больше, сохраняется.
Есть ли лучший способ сделать это?
![enter image description here]()
Ответы
Ответ 1
Возвращать данные из функции hist (или histc) в переменную (y = hist(x,bin);
) и использовать PEAKFINDER Подача файлаExchange, чтобы найти локальные максимумы.
Я также использовал функцию PEAKDET от Эли Биллауэра. Прекрасно работает. Вы можете проверить мой ответ здесь с примером кода.
Ответ 2
Самый простой способ сделать это - сначала сгладить данные с помощью гауссового ядра, чтобы удалить высокочастотные вариации.
Затем используйте функцию localmax
, чтобы найти локальные максимумы.