Объяснение вопроса:
У меня довольно большой файл (до 1 миллиона строк), содержащий данные с майнинг-машины.Данные включают в себя координаты X и Y машины.Машина должна иметь возможность только майнироваться влево (направление -X) или вправо (направление + X), и это происходит в «полосе движения».Он не должен иметь возможность снова добывать ту же область, но может изменить координаты Y в любое время (т. Е. Может изменить полосы в любое время) и пропустить определенные области.Я хочу определить, в каком направлении движется машина в данный момент времени.Например, я хочу увидеть, куда движется машина влево или вправо.Хотя это звучит достаточно просто, у меня возникли некоторые проблемы.
Моя попытка:
В настоящее время я нахожу сумму 100 значений массива разностейX-координаты (массив разностей показывает расстояние, на которое машина переместилась).В идеале, если X-координаты уменьшаются в интервале 100 точек, то они должны двигаться влево, а если X-координаты увеличивались в этом интервале, они должны двигаться вправо.Поэтому, если сумма была отрицательной, она добавит «0» к массиву 100 раз.Я выбрал 100, потому что я думал, что это будет довольно точно, учитывая большое количество образцов.
# miner_x = array of the x-coordinates of the machine
# miner_x_diff = numpy.diff(miner_x)
# 0 = Negative X direction
# 1 = Positive X direction
diffSample= [sum(miner_x_diff[i:i+100]) for i in range(0, len(miner_x_diff), 100)]
Direction = np.array([])
for value in diffSample:
if value < 0:
for _ in itertools.repeat(None, 100):
Direction = np.append(Direction,0)
else:
for _ in itertools.repeat(None, 100):
Direction = np.append(Direction,1)
# correct size
if Direction.size > miner_x.size:
Direction = Direction[0:Direction.size-(Direction.size-miner_x.size)]
Проблема, с которой я сталкиваюсь, заключается в том, что она меняет направление слева направо или наоборот, и это в основном происходит во время смены полосы движения.Это, если курс ожидается, так как сумма вокруг этой области может быть близка к 0. Но я не уверен, как вести учет этого изменения, используя мой текущий метод.Существует ли более точный способ определения направления движения машины?
Ниже приведен пример графика положения машины с использованием одного конкретного набора данных (код опущен, поскольку он не нужен).Желтые точки - это позиции, где у меня были неправильные результаты. В этом примере не должно быть никаких желтых точек.Я не показал цвет направления в этом примере, но вы, конечно, можете увидеть его, если я скажу, что начальная позиция находится внизу справа.
Буду признателен за любую помощь / совет / подсказки:)
Редактировать: Вот изображение того, что я хочу (умМалярные навыки).Обратите внимание, что я не хочу «видеть» прямую линию, просто чтобы знать, что она движется в этих направлениях в этих точках.Зеленый является отправной точкой.