在c#中缩放/插值测量数据
本文关键字:插值 测量 数据 缩放 | 更新日期: 2023-09-27 18:15:00
首先,如果这个问题已经有人问过了,我很抱歉,但是在我对谷歌提供的每个短语的每个链接进行了大约10个小时的深入研究后,我没能找到任何可以帮助我解决问题的东西。
我想做的是:
-
我检索了两个excel表格,其中包含来自两个不同科学测量的数据。每页包含的信息可以很容易地与另一页进行比较。这两个表格之间的唯一区别是它们包含的数据点的数量。例如:第一个工作表包含200秒时间跨度的数据,一个点代表1秒。第二张表也包含相同时间跨度的数据,但是有一个点代表0.5秒。
-
我要解决的问题是,用更少的数据点来"缩放"表格,这样它们就可以很容易地在单个图表中进行比较,这样图表中的每条线在X轴上使用相同的空间。
我在这个任务中遇到的问题是我缺乏足够的数学背景来创建算法。
我已经用GUI创建了整个应用程序,导入excel表格并使用移动平均线平滑(只有当数据集长度相等时才有用)。
任何可以解释这一点的想法或链接都是欢迎的。
我还想说,我目前拥有的任何代码都与这个问题完全无关,它只是关于一个具有上述功能的额外方法。
提前感谢,marfuc
如果两组数据点之间存在直接相关性-即时间匹配-那么在较小的集合上进行线性插值以生成缺失点可能就足够了。
例如,假设你的第一组数据是:Time Value
12:00:00.0 100.0
12:00:01.0 120.0
12:00:02.0 117.5
…第二组是:
Time Value
12:00:00.0 2.5
12:00:00.5 3.0
12:00:01.0 2.6
12:00:01.5 2.9
12:00:02.0 2.8
我们可以用几种方法来填补第一个列表中的空白,这取决于你之后要对数据做什么。
最简单的方法是对值进行线性插值。如果你的点与你正在寻找的值的距离相等(即:你正在寻找中间点的值),那么只需在缺失点处将它们平均起来:
Time Value Lerp
12:00:00.0 100.0
12:00:00.5 110.0
12:00:01.0 120.0
12:00:01.5 118.75
12:00:02.0 117.5
如果采样率相对于输入变化的速率足够高,这是可以的。我见过很多音频处理算法使用这种计算来加倍采样率。当你有高频数据,采样率太低,无法很好地捕捉过渡时,效果就不那么好了。
第二种选择是使用样条函数对一系列点拟合曲线,然后综合缺失点作为曲线上的偏移量。这将为您提供更平滑和更自然的插值,数据中的驼峰看起来更加逼真。如果数据集之间的时间没有很好地对齐,这也将为您提供一种相当好的方法来抵消数据-计算每个点作为沿曲线的偏移量,其距离等于计时偏移量。有很多样条实现可以用来做这个。我建议用Catmull-Rom作为开始算法。
警告:如果你正在对输出进行某种统计分析,那么无论你怎么做,你都不会得到好的结果。如果您的目标是分析,则将较大的组拆分,而不是将数据虚构到较小的组中。