1

我想在我使用 MATLAB 绘制的数据集中找到第一个、第二个和第三个峰值。有人可以帮我弄这个吗?这是我上传的情节的链接

在此处输入图像描述

中心思想是找到在特定时间间隔后出现的峰值。第二个条件只是存储前四个峰值,然后打破条件。所以我在图中找到了第一个最大值。我在 X 轴上看到了 2530 的时间值。然后,我不会在附近寻找,而是在 X 轴上寻找 180-200 之后的峰值。我得到峰值 2,然后存储。然后我又跳了 180-200 并再次寻找附近的高峰。最后在获得前四个最大值后,我停止搜索峰值

4

3 回答 3

2

在这些情况下,我通常做的是搜索最大值,然后擦除该最大值点周围一个小邻域中的所有点并重复这些过程。当然,邻域大小取决于应用程序。

因此,如果您有 vector 中的数据y,则以下内容应该有效:

 [max1, max_ind] = max(y);
 y(max_ind-delta:max_ind+delta) = 0;

 [max2, max_ind2] = max(y);
于 2013-05-29T11:59:10.647 回答
1

作为 nimrodm 答案的替代方案,您可以利用已知的时间延迟来发挥自己的优势。找到你的第一个最大值,然后跳过你已知的延迟并在较小的窗口内搜索最大值。这样做时您必须调整索引,但效果很好。

使用向量中的数据y

[max1,max_ind1] = max(y);
next_ind = max_ind + 190;

[max2,max_ind2] = max(y(next_ind-20:next_ind+20));
max_ind2 = max_ind2 + next_ind-21;
于 2013-05-29T12:18:47.443 回答
0

findpeaks函数将为您提供向量中的所有峰值,但它需要做更多的工作来过滤您不关心的峰值。在此之前可能会应用低通滤波器findpeaks

于 2016-03-29T04:23:54.917 回答