2014-01-20 87 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

快樂是我的:) –