2014-01-20 93 views
2

此处的任务是从矢量中查找局部最大值(范围)或最小值的数量。我知道如何找到局部最大值/局部最小值(图中的一个点),然而,局部最大值现在聚集在向量中。从C++中的向量中查找局部最大值/局部最小值(范围)的数量

为了给出一个清晰的概念,绘制出从向量中的值会产生类似这样:

enter image description here

简单来说,我想找到的峰值数。在这种情况下,6.然而,峰不是单点,而是一系列值。我怎样才能从矢量中找到峰值的数量(局部最大值的范围)?

将不胜感激,如果可以有一些伪代码,代码示例,如果没有,建议也将赞赏。我为这个项目使用了Visual Studio C++,以及QWT,QT和OpenCV。

+1

所有的极大值都具有大致相同的值吗?最大值范围的最小长度是多少?例如,不是第一个(值为0.25)后的小峰值被认为是最大值? –

+0

我希望避免将这些小峰作为最大值计入。我有一个想法是添加一个条件。条件将是这样的,如果该值低于某个数字,则不符合最大值。我打算如何获得特定数字是:(矢量中非零值的总和)/(矢量中非零值的总数)。 – rockinfresh

+0

除此之外,所有最大值都具有大致相同的值。 – rockinfresh

回答

0

我认为这不应该那么困难。只需按顺序扫描所有值,并在达到阈值级别时开始范围,当您超出阈值级别时,结束特定范围。

您需要筛选出两个小的范围。

+0

感谢您的帮助(: – rockinfresh

+1

快乐是我的:) –