2016-12-30 95 views
-1

我想在創建的一組數據集中找到一組特定的最大點。 在外觀上看起來像這樣: 其中藍色點是我的數據,綠色線是情節,黃色我標記了我想找到的最大點。 enter image description here使用C#檢測嘈雜數據集中的峯值

到目前爲止,我已經試過「平穩」的通過當地平均滾動窗口功能,但修改的最高值,並且不很光滑它足以看出每個那些嘈雜峯作爲一個單一的最大值。

是否有一些轉換我可以在代碼中對這個數組進行編碼以便更容易地提取這些值?

我正在用C#編寫。 我能找到的最接近的帖子是我對R的看法,因爲我對此一無所知。

+0

我想你需要一些統計,你可以看看這裏http://www.originlab.com/doc/Origin-Help/DescStatsRow-Dialog – sakir

+0

我不知道信號處理,所以這是一個徹底的沒有受過教育的企圖打破這個問題。您的數據似乎是週期性的。如果您知道您期望的期限或通過FFT或其他方式找到主頻率,則可以創建一個與期間一樣寬的窗口,並每次移動一段時間,每次都找到局部最大值。你必須做一些事情來確保你的窗口中心大致以局部最大值開始,以避免意外捕獲兩個峯值。 – adv12

+0

你也可以在這裏看看http://stackoverflow.com/questions/13694523/finding-the-local-maxima-peaks-and-minima-valleys-of-histograms或這個http://stackoverflow.com/問題/ 5269000 /查找本地極大值,過一個動態範圍 – sakir

回答

1

沒有統計軟件包的真正幼稚但有效的方法:如果你想爲連續函數找到所有局部最大值,它們對應於函數的'方向'(上升或下降)的變化。每當它從asc - > desc出現時,你都有一個本地最大值。

事情是這樣的:https://dotnetfiddle.net/4YPz2A

這會給你更多的「黃」匹配比你想;但是可以通過平滑數據集(例如,首先平均每3個連續的數據點)來達到「正確」的數量。