时间序列的插值

时间:2014-12-26 05:13:02

标签: c++

在COM中有类型DateTime的时间范围,但我需要从该系列中获取固定数量的项目的最大值。如何插入此系列以便我可以获取固定数量的项目

例如,我有100个值的DATETIME集合,我只需要20个值(包括第一个和最后一个记录)。我需要检查迭代的时间跨度是什么

DateTime time1 = new DateTime(2014, 11, 12, 12, 10, 0, 0);
 DateTime time2 = new DateTime(2014, 11, 12, 12, 27, 0, 0);

 int maxitems = 20;
 double dTimeSlices = Math.Floor((maxitems) / 2.0);
 double dTimeSpan = (time2.Ticks - time1.Ticks);
 double dSliceSpan = ts.Ticks / dTimeSlices;

1 个答案:

答案 0 :(得分:0)

  

例如,我有我需要的1000个值的DATETIME集合   只取20个值(包括第一个和最后一个记录)。是什么   时间跨度我需要检查迭代

插值对discrete points起作用,而不是an entire series

检查迭代没有时间跨度。唯一相关的timespan是插入的2个点之间的时间

如果你想在你的1000点集合中收集/分配相当均匀的积分,请查看收集的前10%中有多少点,接下来的10%等等(选择任何有意义的括号,四分之一等等。)你将插入以删除每个括号中的点,直到括号相等你是20值。 (注意一个更合适的方法将一组1000减少到一组20,同时最小化任何累积偏差或误差将适合曲线到一系列点,然后你可以从结果曲线中挑选任意20个点来表示你的一套1000)

如果,而不是通过均匀分布将1000套减少到20套,那么你所关心的只是从1000的集合中挑选20个值,那么你将基本上做同样的事情,除了这里,只需从一个时间中选择20对值,该时间表示整个1000集合中的均匀扩散时间并插入每对。这将在数​​据中给你20分。

希望这比泥泞更清楚。