algorithm - 如何找到两组嘈杂数据的交集?

标签 algorithm dataset scientific-computing idl-programming-language data-science

我目前正在编写一个脚本,该脚本应该从我的图表中删除冗余数据点。我的数据包括来自相邻数据集的重叠,我只想要通常更高的数据。 (想象一下 x 偏移量略微重叠的两个高斯函数。我只对重叠区域中的较高值感兴趣,这样当我组合数据以制作单个光谱时,我的最终图表不会变得嘈杂。 )

这是我的问题:

1) 两个数据集的 x 值不同,所以我不能只说“在 x 处取最大 y 值”。它们靠得很近,但并不相等。

2) x 值之间的距离不相等。

3) 数据有噪声,因此数据集可能有多个交叉点。虽然高斯 A 在相交后通常比高斯 B 高,但噪声意味着高斯 B 可能仍然有一些更高的值。这意味着我不能只说“总是在这个 x 区域取最大值”,因为那样我会疯狂地结合两个数据集的噪音。

4) 我有 n 个这种类型的重叠,所以我需要一个有效的算法,我所能想到的就是 O(n^3) 的某处,这类似于“对于每个重叠,将数据集存储到两个数组和数据点 (x0,y0) 和 (x1,y1) 的每个组合循环直到找到 abs(x1-x0) 和 abs(y1-y0) 的最低组合”

因为我不是程序员,所以我完全迷路了。我也无法在任何地方找到解决此问题的算法 - 大多数算法都假定我正在比较的数组中的条目是相等的整数,但我使用的是几乎相等的 float 。

我正在使用 IDL,但如果能提供通用算法或至少提供我可以尝试的提示,我也将不胜感激。谢谢!

最佳答案

您可以执行此操作的一种方法是,如果您将高斯分布拟合到您的数据,然后假设每个数据点都等于该点的高斯分布,然后取最大值。

这可以按如下方式完成:

  • 将一些高斯 G1 拟合到数据集 X1 并将一些高斯 G2 拟合到数据集 X2,其中 G1 的均值小于 G2 的均值。
  • 然后,通过一些算术找到它们的交点。
  • 然后,对于所有小于交集的 x 值取 X1,所有大于交集的 x 值取 X2。

关于algorithm - 如何找到两组嘈杂数据的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36328327/

相关文章:

C++ string::find 复杂度

python - 使用现有数据帧中的值使用 pandas 创建具有二进制值列的数据帧

performance - Haskell 是否适合长时间运行的应用程序?

machine-learning - 如何选择假设函数的阶数?

algorithm - 使用总成本比较单个数据集上的两种算法 - 使用哪种统计测试?

python - 查找通信网络流量频率的算法

arrays - 使用芬威克树或 BIT 的数组中非递减子序列的最大总和

c# - 从 DataGridView 获取数据到图表

C# 无法读取数据集中的 xml

c - 在 C 中共享公共(public)数据以进行科学计算