我试图了解如何从直方图中检测出两个峰值。可能有多个,但我需要选择两个最高。基本上我需要的是,虽然我会将这些峰值向左或向右移动,但我需要掌握它们。它们的传播可能会有所不同,它们的PEAK值可能会发生变化,因此我必须找到一种方法来在Matlab中掌握这两个峰值。
到目前为止我所做的是创建一个5值窗口。该窗口填充直方图中的值并执行扫描。每次我向前移动5步到下一个值并将之前的窗口值与当前值进行比较。保留了更大的东西。
有更好的方法吗?
答案 0 :(得分:6)
最简单的方法是首先使用高斯内核平滑数据,以消除高频变化。
然后使用函数localmax
查找局部最大值。
答案 1 :(得分:5)
将数据从hist(或histc)函数返回到变量(y = hist(x,bin);
)并使用PEAKFINDER FileExchange提交来查找本地最大值。