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

Java: Reduce array to specific number of averages

需要解决的主要问题是:

假设我有一个包含 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 轴,它长 720 像素,假设我得到 1000 分。现在我必须将这 1000 个点(2 个数组,一个用于 x 值,一个用于 y 值)减少到最多 720 个点。

考虑过插值之类的东西,但我仍然不太确定这是否是我要找的东西。

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

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

插值是个好主意。你输入你的点并得到一个多项式函数作为输出。然后你可以用它来画你的线。在这里查看更多:Interpolation over an array (or two)

既然是 X 轴,为什么不用

MIN, MAX and (MIN+MAX)/2 

你的三分?

我建议您以某种方式拟合所有点,然后评估显示所需的特定点。

装修选择多:

  1. 最小二乘法
  2. 使用多项式或样条曲线分段

你应该查阅文本或找一个图书馆来帮助你 - 比如 Apache Commons Math