У меня есть пересечения и наклоны 14 разных линий, где y = Slope * x + Intercept
. Линии более или менее параллельны следующим образом. Каждая строка представляет определенный класс.
Intercept Slope
1 8.787611 -3.435561
2 6.853230 -2.662021
3 6.660198 -2.584231
4 6.929856 -2.678694
5 6.637965 -2.572499
6 7.132044 -2.744441
7 7.233281 -2.802287
8 7.285169 -2.807539
9 7.207577 -2.772140
10 6.872071 -2.640098
11 6.778350 -2.612107
12 6.994820 -2.706729
13 6.947074 -2.690497
14 7.486870 -2.864093
Когда новые данные поступают как (x, y)
. Я хотел бы сделать две задачи:
1) Найдите, какая линия ближе всего к точке (например, «1», «4» или «8»).
2) Найдите интерполированное значение при x = 2,6. Это означает, что если точка расположена между двумя линиями, а линии имеют значения 0
и -0.05
для x = 2.6
, то интерполированное значение будет в [-0.05, 0]
пропорционально расстоянию точки от линий.
x y
1 2.545726 0.1512721
2 2.545726 0.1512721
3 2.545843 0.1512721
4 2.545994 0.1512721
5 2.546611 0.1512721
6 2.546769 0.1512721
7 2.546995 0.1416945
8 2.547269 0.1416945
9 2.548765 0.1416945
10 2.548996 0.1416945
Я рассматриваю возможность написания собственного кода и определения расстояния до новой точки из 14 строк, используя эту страницу Википедии и затем выбирая два минимальных расстояния линий выше и ниже точки (если точка не выше или ниже всех 14 линий), и пропорционально интерполировать. Однако я почти уверен, что это будет не самый быстрый способ, поскольку он не векторизован. Мне было интересно, есть ли более быстрый подход к этой задаче.