C# 用C语言缩放/插值测量数据#
首先,如果这个问题已经被问到了,我很抱歉,但是在对谷歌提供的每一个链接和我给出的每一个短语进行了大约10个小时的深入研究后,我找不到任何可以帮助我解决问题的东西 我想做的是:C# 用C语言缩放/插值测量数据#,c#,interpolation,data-manipulation,C#,Interpolation,Data Manipulation,首先,如果这个问题已经被问到了,我很抱歉,但是在对谷歌提供的每一个链接和我给出的每一个短语进行了大约10个小时的深入研究后,我找不到任何可以帮助我解决问题的东西 我想做的是: 我检索了两张excel表格,其中包含来自两种不同科学测量的数据。每个工作表都包含可以分别轻松与其他工作表进行比较的信息。 这两张图纸之间的唯一区别是它们包含的数据点的数量。 例如:第一张图纸包含200秒时间跨度的数据,其中一个点表示1秒。第二张表还包含相同时间跨度的数据,但,其中一个点表示0.5秒 我必须解决的问题是,用较
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作为起始算法
警告:如果你对输出进行某种统计分析,那么不管你怎么做,你都不会得到好的结果。如果你的目标是分析,那么就把大的一组数据减少,而不是把数据编成小的一组。这可能不是获得答案的最佳地方。问题更具理论性——“插值使用的不同算法是什么?”。是为了更具体的问题。“你可以试试。”谢谢你的回答,我会的。如果我不从这里删除这个问题,会不会引起问题?以防万一浏览的人知道一些可以帮助我的东西。