內找出差異大可以說我有雙打的名單:
排序列表
0.0015
0.0016
0.0017
0.0019
0.0021
0.0022
0.0029
0.0030
0.0033
0.0036
很顯然有一個在0.0022和0.0029存在大的差異相比休息,但有一個辦法可以讓我的C#程序能夠使用靜態閾值在排序列表W/O中注意到這種差異。因爲我收到的這些數據,差異可能不總是0.0007的差異。所以我寧願如果我的程序能夠'聰明'足以識別這些'大'的差異,並將此列表分成多個列表。
內找出差異大可以說我有雙打的名單:
排序列表
0.0015
0.0016
0.0017
0.0019
0.0021
0.0022
0.0029
0.0030
0.0033
0.0036
很顯然有一個在0.0022和0.0029存在大的差異相比休息,但有一個辦法可以讓我的C#程序能夠使用靜態閾值在排序列表W/O中注意到這種差異。因爲我收到的這些數據,差異可能不總是0.0007的差異。所以我寧願如果我的程序能夠'聰明'足以識別這些'大'的差異,並將此列表分成多個列表。
如果我已經正確理解你的問題,您可能需要填寫一些空白,但你會得到移動在下面的例子:
List<double> doubleList = new List<double>{
0.0015,
0.0016,
0.0017,
0.0019,
0.0021,
0.0022,
0.0029,
0.0030,
0.0033,
0.0036
};
double averageDistance = 0.0;
double totals = 0.0;
double distance = 0.0;
for (int x = 0; x < (doubleList.Count - 1); x++)
{
distance = doubleList[x] - doubleList[x + 1];
totals += Math.Abs(distance);
}
averageDistance = totals/doubleList.Count;
// check to see if any distance between numbers is more than the average in the list
for (int x = 0; x < (doubleList.Count - 1); x++)
{
distance = doubleList[x] - doubleList[x + 1];
if (distance > averageDistance)
{
// this is where you have a gap that you want to do some split (etc)
}
}
非常感謝,我想我現在明白了。不知道爲什麼我沒有想到這一點。當我一直陷入困境時,大腦無法正常工作。謝啦! –
計算平均平均(http://en.wikipedia.org/wiki/Arithmetic_mean)和標準偏差(http://en.wikipedia.org/wiki/Standard_deviation)。使用這些來確定超出「n」個標準偏差的值。
另一種方法是計算連續值之間的所有差異,對這些差異進行排序(降序),並假設這些差異值的頂部'm'%表示最大的變化。
猜測你可以計算_average_或_median_(取決於你)的差異,並報告以上所有差異。 (或者你可以報告代表所說的所有差異,前25位) –