gpt4 book ai didi

c# - 在 C# 中缩放/插值测量数据

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:07 25 4
gpt4 key购买 nike

首先,如果这个问题已经被问到,我深表歉意,但是在对谷歌为我提供的每个短语提供的每个链接进行了大约 10 小时的深入研究后,我找不到任何可以帮助的东西我的问题。

我想做的是:

  1. 我检索了两张 Excel 表格,其中包含来自两种不同科学测量的数据。每张纸包含的信息可以很容易地分别与另一张纸进行比较。两张表之间的唯一区别是它们包含的数据点数量。例如:第一个工作表包含时间跨度为 200 秒的数据,一个点代表 1 秒。第二张表也包含相同时间跨度的数据,一个点代表 0.5 秒。

  2. 我要解决的问题是用较少的数据点“缩放”工作表,以便在单个图表中轻松比较它们,以便图表中的每条线都使用相同的空间X 轴。

我在执行此任务时遇到的问题是我缺乏足够的数学背景来创建算法。

我已经使用 GUI 创建了整个应用程序,导入 Excel 工作表并使用移动平均线进行平滑处理(仅当数据集长度相等时才有用)。

欢迎任何想法或链接到任何可以解释这一点的地方。

我还想说,我目前拥有的任何代码都与这个问题完全无关,它只是一个具有上述功能的附加方法。

提前致谢,马福克

最佳答案

如果两个集合的数据点之间存在直接相关性 - 即两者的时间匹配 - 那么对较小的集合进行线性插值可能足以生成缺失点。

例如,假设您的第一组数据是:

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 作为起始算法。

警告:如果您正在对输出进行某种统计分析,那么无论您如何做,都不会得到好的结果它。如果分析是您的目标,则将较大的组缩减,而不是将数据捏造到较小的组中。

关于c# - 在 C# 中缩放/插值测量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24949738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com