Java:将数组减少到特定的平均数

时间:2016-05-25 10:45:37

标签: java arrays algorithm math interpolation

需要解决的主要问题是:

我们说我有一个包含8个数字的数组,例如[2,4,8,3,5,4,9,2]并且我在坐标系中使用它们作为我的x轴的值来绘制线。但我只能显示其中的3个点。 我现在需要做的是将点数(8)减少到3,而不是过多地操纵线 - 所以使用平均值应该是一个选项。 我不是在寻找整体阵列的平均值 - 我仍然需要总共8点的3点。

对于像[2,4,2,4,2,4,2,4]这样的数组和该数组中的4个数字,我可以简单地使用平均值" 3"每一对 - 但如果数量不均匀则不可能。

但我该怎么做?你知道如何以数学方式调用这个过程吗?

为了给你一些关于这个问题的更实际的细节:我有一个x轴,长720px,让我说我得到1000分。现在我必须将这1000个点(2个数组,一个用于x,一个用于y值)减少到最多720个点。

考虑插值和类似的东西,但我仍然不太确定这是否是我正在寻找的东西。

4 个答案:

答案 0 :(得分:2)

插值是个好主意。您输入您的点并获得多项式函数作为输出。然后你可以用它来画线。点击此处查看更多信息:Interpolation over an array (or two)

答案 1 :(得分:1)

听起来你正在寻找比简单平均值更高级的数学函数。

我建议尝试通过Mathematica Stack Exchange识别潜在的算法,然后尝试找到一个实现任何潜在选择的Java库(这里可能是一个新问题)。

答案 2 :(得分:1)

我建议您以某种方式调整所有要点,然后根据显示所需的特定点进行评估。

有许多适合的选择:

  1. 最小二乘
  2. 使用多项式或样条曲率分段
  3. 您应该查阅文本或找一个图书馆来帮助您 - 例如Apache Commons Math

答案 3 :(得分:0)

因为它是X轴,为什么不使用

MIN, MAX and (MIN+MAX)/2 

你的三分?