15

我试图了解如何从直方图中检测两个峰值。可以有多个,但我需要选择最高的两个。基本上我需要做的是,虽然我会让这些峰值向左或向右移动,但我需要抓住它们。它们的分布可能会有所不同,并且它们的 PEAK 值可能会发生变化,因此我必须找到一种方法来在 Matlab 中获取这两个峰值。

到目前为止我所做的是创建一个 5 值窗口。该窗口由直方图中的值填充并执行扫描。每次我向前移动 5 步到下一个值并将前一个窗口值与当前值进行比较。以较大者为准。

有没有更好的方法来做到这一点?

在此处输入图像描述

4

2 回答 2

6

最简单的方法是首先使用高斯核对数据进行平滑处理,以消除高频变化。

然后使用该函数localmax找到局部最大值。

于 2012-04-24T19:02:48.387 回答
5

将数据从 hist(或 histc)函数返回到变量 ( y = hist(x,bin);) 并使用PEAKFINDER FileExchange提交来查找局部最大值。

我还使用了 Eli Billauer 的PEAKDET功能。效果很好。您可以使用代码示例在此处查看我的答案。

于 2012-04-24T17:46:58.350 回答