我有两对数据集,x1 vs y1和x2 vs y2。 x1,y1,x2,y2的数据分布均不均匀,如下图所示:
我的问题是确定两对数据集x1 / y1和x2 / y2的交集,如下图所示:
我尝试对数据点进行插值以使其具有均匀的间隔,但是由于x1 / y1的无效区域,对于相同的x值存在多个解。
这里是x1 / y1和x2 / y2关系的放大图,显示了数据集中存在无法以任何方向插值的结:
答案 0 :(得分:1)
x2 / y2似乎是一条平滑曲线,因此您应该能够使用多项式分段对其进行插值,并获得不错的结果。当然,您不希望使用x1 / y1进行此操作,因为您的数据很疯狂。我将最后两个图像中的自变量称为t。您可以使用matlab样条函数从t和x2 / y2值的数组进行插值。在这种情况下,您的t值数组应与x2 / y2值集的大小相同。然后,您可以遍历x1 / y1点,使用插值在相同的t值处估计x2 / y2。然后,您可以减去这些值。当此值的符号对于两个连续的x1 / y1点改变时,您将在它们之间有一个交点。然后在这两个x1 / y1点之间执行线性插值,并找到该线与您插值的x2 / y2函数的交点。该代码可能会有些混乱,但是应该可以工作。您将需要查看MATLAB spline文档。