2013-07-31 37 views
3

好的傢伙,有時間去創造。 我有一個整數列表,並希望保留下面5個綠框中的整數。 我想過找到5個最小值,然後從每個最小值開始左右移動,直到下一個整數距離太遠爲止。然而,這可能很難做,因爲最後的框有一些分散的值,我想保持。將列表<Integer>分成5個區塊的5個列表的最好方法

所以懸崖筆記, 有整數的列表,我想從5個列表中的每一個列表中拿出一個綠框的值。

如果這個問題看起來很愚蠢,我很抱歉,我只是想看看其他人是否有更好的方法來解決這個問題,然後是我上面提到的問題。

List of integers

編輯: 也許Levenberg-Marquardt算法將幫助?只要我能理解數學書籍xD。我發誓的數學解釋從來沒有用英文書寫,但如果有人告訴我使用,以及如何,我明白了它。然後,我可以再次讀出一本書,只是再次感到困惑!

+1

你有算法來確定綠色框?或者你在問什麼? –

+0

不,我畫了那些突出顯示stackoverflow我想保留。 – WIllJBD

+0

我想如果我知道每個最小值我想保留的最大值範圍,我可以從每個最小值左右移動,直到currentInteger>(minimumInteger + maxDifference) – WIllJBD

回答

1

這可能是一個可能的解決方案:

讓打電話給你的整數P [N]的列表。

  • 定義點的新名單,我們把它稱爲MAX [N],這樣計算:

IF((MAX [N] < P [N])||(N = = 0)) MAX [n] = P [n]; else MAX [n] = MAX [n-1];

這樣

,MAX [n]的名單將在綠線在圖表上方的:MAX[n]

第一個解決方案: 識別點內的綠框,你只需要計算的增量比你P列表,並檢查其絕對值是否小於閾值:

I = [P [n + 1] - P [n]]/[T [n + 1] - T [n]]

因此,如果我低於閾值並且P低於MAX,則點進入綠框:

如果((P [N] < MAX [n])的& &(ABS(I)< DER_THRESHOLD)) //你的意思是綠盒子

從你的圖裏面,roughtly,你可以把DER_THRESHOLD = 5。

第二溶液: 計算整數的新列表,稱爲此時AVG [n]的那樣:

AVG [N] =(MAX [N] + P [N])/ 2

這將紅線結束(抱歉醜圖,做到了按手):

AVG[n]

,現在你可以識別綠框只是檢查,如果你的P [N]低於AVG [N ]。

在AVG計算中使用某種低過濾的方法可能會更好。

+0

這太棒了。非常簡單,非常容易調整和操作。謝謝! – WIllJBD

+0

高興地幫助,歡迎您! –

1

嘗試通過點找到最小二乘擬合線,然後查看點是否在線以上或以下。這將把你的點分成線下的五個綠色框和線上的六個紅外框。它也將包括框之間的分數,但這些將很容易排除,因爲在應該排除的點之前或之後有大的跳躍。但它也看起來像你可能在這個數據集的右上角有麻煩。

+0

這幾乎工作,但最終被證明難以得到恰到好處的部分。然而,當時我所做的也是更好的主意。謝謝。 – WIllJBD