我正在绘制N系列数据。每个系列包含N个数据点,这些数据点在UNIX时间内具有出现时间,精度为5位小数。数据点可能有不同的间隔,因此两个或多个数据点不太可能共享相同的发生时间。
我将所有数据点存储在一个已排序的集合中。绘制的较小系列是从该数据集构建的。问题在于,如果我沿着时间轴设置数据动画,则一个系列可能没有任何近期点,因此这些点不能保留在已查看的集合中,因为它们显然不在同一位置。例如,一个数据系列可能会停止有点,然后再开始很久。以下是数据点数组(它们的UNIX发生时间)。
allpoints
= {120.5,130.5,135.5,140.5,140.5,145.5,150.3,150.5,160.5,170.5,180.5,190.5,200.5,200.5};
series1
= {135.5,140.5,145.5,150.5,200.5
};
series2
= {120.5,130.5,140.5,150.3,160.5, 170.5, 180.5, 190.5
,200.5};
当然,我无法保留series1
向前的所有旧点,因为它基本上不会存在50秒,而series 2
的点仍在绘制中
对于我来说,最好的方法是保持这些系列中的数据是最新的,而不必每次从主数据点集合中添加另一个点时都检查每个点?可能是优先级队列还是什么?
由于
答案 0 :(得分:0)
如果我理解正确,你的问题是,一旦从主数据集中得到一个新点,你只想将它添加到现有的系列中,如果时间间隔不大于某个常数,则到达最后一个点的间隔。各自的系列。
所以你的问题基本上是,什么时候可以删除系列中的旧点,以及如何有效地执行此操作。
您可以使用的是一个列表,您可以在其中跟踪尾部和头部。然后,一旦获得新的数据点,就可以计算出要保留的最旧点的时间。然后循环遍历每个列表,并在计算时间之前删除带有时间戳的点。所以你的算法如下:
您也可以先查看系列文章,以防您删除整个系列,但这取决于您的数据的性质以及您对每个系列中各点的预期频率。
我希望这能回答你的问题。