У меня есть координаты x, y от GPS-данных, отслеживающих движения 10 раз в секунду.Я вычислил скорость для каждой строки (каждая строка является местоположением широты, взятой в тот период времени, есть 15 строк в секунду).Если я пытаюсь вычислить скорость для какой-либо одной строки, появляется некоторый шум, потому что данные о местоположении расположены так близко друг к другу.
Прямо сейчас у меня есть столбец с названием «Расстояние», и для вычисления расстояния для каждой строки я смотрю на 1 строку выше и на 1 строку ниже этой строки и вычисляю расстояние между точками (x, y).Расстояние между точками обычно очень и очень мало, потому что оно очень близко друг к другу.
Затем я вычисляю скорость для каждой строки, которая равна d / t, поэтому она будет равна расстоянию / 0,2 секунды (потому что каждая строка находится на расстоянии 0,1 секунды).
Я все еще слышу шум при этом, потому что местоположения вычисляются так часто, поэтому я использую .rolling, чтобы найти выбросы (то есть было бы невозможно перейти от 50 миль в час до 150 миль в час за 1 секунду).
Прямо сейчас я использовал .rolling и использовал окно 4
df.Speed.rolling(window=4, min_periods=4, center=True).mean()
, но все еще получаю выбросы.Кроме того, хотя я не хочу, чтобы он прыгал вокруг, я все еще хочу получить мгновенную скорость, поэтому я не хочу смотреть на места впереди / сзади, потому что тогда я буду подвергать риску мгновенную скорость.
Я не уверен, есть ли функция сглаживания (я видел gaussian, Blackman, Bartlett win_type, но у меня нет опыта с этим, и я не знаю, подходит ли это в этом случае) или лучший способ сделать этоили если мне просто нужно вручную добавить множество тестовых случаев, чтобы убедиться, что скорость имеет смысл и не прыгает.
Спасибо!