我试图了解如何从直方图中检测两个峰值。可以有多个,但我需要选择最高的两个。基本上我需要做的是,虽然我会让这些峰值向左或向右移动,但我需要抓住它们。它们的分布可能会有所不同,并且它们的 PEAK 值可能会发生变化,因此我必须找到一种方法来在 Matlab 中获取这两个峰值。
到目前为止我所做的是创建一个 5 值窗口。该窗口由直方图中的值填充并执行扫描。每次我向前移动 5 步到下一个值并将前一个窗口值与当前值进行比较。以较大者为准。
有没有更好的方法来做到这一点?
我试图了解如何从直方图中检测两个峰值。可以有多个,但我需要选择最高的两个。基本上我需要做的是,虽然我会让这些峰值向左或向右移动,但我需要抓住它们。它们的分布可能会有所不同,并且它们的 PEAK 值可能会发生变化,因此我必须找到一种方法来在 Matlab 中获取这两个峰值。
到目前为止我所做的是创建一个 5 值窗口。该窗口由直方图中的值填充并执行扫描。每次我向前移动 5 步到下一个值并将前一个窗口值与当前值进行比较。以较大者为准。
有没有更好的方法来做到这一点?
最简单的方法是首先使用高斯核对数据进行平滑处理,以消除高频变化。
然后使用该函数localmax
找到局部最大值。
将数据从 hist(或 histc)函数返回到变量 ( y = hist(x,bin);
) 并使用PEAKFINDER FileExchange提交来查找局部最大值。