2

我有两对数据集,x1 vs y1 和 x2 vs y2。x1, y1, x2, y2 的数据分布不均,如下图所示:

x1 x2 y1 y2

我的问题是确定两对数据集 x1/y1 和 x2/y2 的交集,如下图所示:

x1/y1 与 x2/y2

我尝试对数据点进行插值以使间距均匀,但由于 x1/y1 的无效区域存在相同 x 值的多个解决方案。

这是 x1/y1 和 x2/y2 关系的放大图,显示数据集中存在无法在任何方向上插值的节点:

放大 x1/y1 和 x2/y2 关系

4

1 回答 1

1

x2/y2 似乎是一条平滑曲线,因此您应该能够使用多项式对其进行分段插值,并获得不错的结果。当然,您不会希望对 x1/y1 执行此操作,因为您的数据很疯狂。我将最后两张图像中的自变量称为 t。您可以使用 matlab spline 函数从 t 和 x2/y2 值的数组进行插值。在这种情况下,您的 t 值数组应该与您的 x2/y2 值集的大小相同。然后你可以循环你的 x1/y1 点,使用插值在相同的 t 值处估计 x2/y2。然后你可以减去这些值。当这个值的符号在两个连续的 x1/y1 点上发生变化时,它们之间就有一个交点。然后在这两个 x1/y1 点之间执行线性插值,并找到该线与插值 x2/y2 函数的交点。代码可能会有点混乱,但它应该可以工作。你会想看看MATLAB 样条文档。

于 2018-10-13T15:40:28.447 回答