【发布时间】:2013-06-14 07:11:26
【问题描述】:
我正在读取数据对(xValues、yValues),我想知道存储它们的最佳方式是什么。目前我在List<double>, 中执行此操作不需要ObservableCollection,因为数据将在程序运行时保持不变。但我需要能够对几个(两个)数据源进行一些操作。由于这两个来源之间的xValues 可能不一样,我需要为此进行线性插值。
我读过Dictionary、LinkedList 等内容,我对自己需要什么以及什么更适合这个小项目感到困惑。
当我开始制作填充缺失数据点的方法时,我遇到了几个困难:
如果xValue 与 series2 中的相同,我需要检查 series1 中的每个点,但是由于 xValues 是有序的,我认为检查整个列表中的每个值都会对性能造成很大的损害,只是说,不,没有那个xValue,让我们插值并插入那个新点。
我怎样才能在两个没有给定索引但值 (x2>x1) 之间精确插入一个点。
我认为当您在编程中使用 2D 数据点时,这是一个常见的问题,您是否知道 C# 中是否实现了某些东西,或者是否有代码可以激发我的灵感?
【问题讨论】:
-
你知道同一个xValue是否会出现多次吗?如果没有,我认为字典可能是查找速度最快的。
-
不,我不希望垂直线或每个 xValue 超过一个 yValue。谢谢。
-
要进行插值,您需要查看 2 个点,1 个小点,1 个大点。这意味着您将不知道您正在寻找的值,因此重新考虑字典将无济于事。您将需要某种 List/SortedList,可能是 Tuple
。如果列表已排序,您可以使用 Linq 找到小于您的点的 MAX 值,并假设 MIN 值更大作为下一个点。
标签: c# data-structures types interpolation