Сглаживайте данные GPS

Мы используем AspectJ и аннотации Java с этой целью. Если мы должны знать ко времени выполнения для метода, мы простой аннотируем его. Больше усовершенствованной версии могло использовать собственный уровень журнала, который может, включил и отключил во времени выполнения.

public @interface Trace {
  boolean showParameters();
}

@Aspect
public class TraceAspect {
  [...]
  @Around("tracePointcut() && @annotation(trace) && !within(TraceAspect)")
  public Object traceAdvice ( ProceedingJintPoint jP, Trace trace ) {

    Object result;
    // initilize timer

    try { 
      result = jp.procced();
    } finally { 
      // calculate execution time 
    }

    return result;
  }
  [...]
}
141
задан P̲̳x͓L̳ 28 March 2014 в 16:36
поделиться

4 ответа

То, что вы ищете, называется Фильтром Калмана . Он часто используется для сглаживания навигационных данных . Это не обязательно тривиально, и вы можете многое настроить, но это очень стандартный подход, который хорошо работает. Доступна библиотека KFilter , которая является реализацией C ++.

Мой следующий запасной вариант - метод наименьших квадратов . Фильтр Калмана сглаживает данные, принимая во внимание скорости, тогда как подход наименьших квадратов будет использовать только позиционную информацию. Тем не менее, это определенно проще реализовать и понять. Похоже, что в Научной библиотеке GNU может быть реализация этого.

74
ответ дан 23 November 2019 в 23:11
поделиться

Один из методов, который требует меньше математики / теории, - это выборка 2, 5, 7 или 10 точек данных за раз и определение тех, которые являются выбросами. Менее точная мера выброса, чем фильтр Калмана, заключается в использовании следующего алгоритма для определения всех попарных расстояний между точками и исключения той, которая наиболее удалена от других. Обычно эти значения заменяются значением, наиболее близким к выпадающему значению, которое вы заменяете

Например,

Сглаживание в пяти точках выборки A, B, C, D, E

ATOTAL = СУММА расстояний AB AC AD AE

BTOTAL = СУММА расстояний AB BC BD BE

CTOTAL = СУММА расстояний AC BC CD CE

DTOTAL = СУММА расстояний DA DB DC DE

ETOTAL = СУММА расстояний EA EB EC DE

Если BTOTAL наибольшее, вы замените точку B на D, если BD = min {AB, BC, BD, BE}

Это сглаживание определяет выбросы и может быть увеличено за счет использования средней точки BD вместо точки D для сглаживания позиционной линии. Ваш опыт может отличаться, и существуют более математически строгие решения.

4
ответ дан 23 November 2019 в 23:11
поделиться

Что касается аппроксимации методом наименьших квадратов, вот еще пара вещей, с которыми можно поэкспериментировать:

  1. То, что аппроксимация методом наименьших квадратов, не означает, что она должна быть линейной. Вы можете подобрать квадратичную кривую к данным методом наименьших квадратов, тогда это будет соответствовать сценарию, в котором пользователь ускоряется. (Обратите внимание, что под методом наименьших квадратов я подразумеваю использование координат в качестве зависимой переменной и времени в качестве независимой переменной.)

  2. Вы также можете попробовать взвесить точки данных на основе заявленной точности. Когда точность низкая, вес этих точек данных ниже.

  3. Еще одна вещь, которую вы, возможно, захотите попробовать, - это не отображать одну точку, если точность низкая, отобразите кружок или что-то, указывающее диапазон, в котором пользователь может основываться на заявленная точность. (Это то, что делает встроенное в iPhone приложение Google Maps. )

4
ответ дан 23 November 2019 в 23:11
поделиться

Вы также можете использовать сплайн. Введите имеющиеся у вас значения и интерполируйте точки между известными точками. Связывая это с методом наименьших квадратов, скользящее среднее или фильтр Калмана (как упоминалось в других ответах) дает вам возможность вычислять точки между вашими «известными» точками.

Возможность интерполировать значения между вашими известными точками дает вам приятный плавный переход и / разумный / приближение того, какие данные были бы представлены, если бы у вас была более высокая точность. http://en.wikipedia.org/wiki/Spline_interpolation

У разных сплайнов разные характеристики. Чаще всего используются сплайны Акима и Кубик.

Другой алгоритм, который следует рассмотреть, - это алгоритм упрощения линий Рамера-Дугласа-Пекера, он довольно часто используется для упрощения данных GPS. ( http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm )

Возможность интерполировать значения между вашими известными значениями дает вам приятный плавный переход и / разумное / приближение того, какие данные были бы представлены, если бы у вас была более высокая точность. http://en.wikipedia.org/wiki/Spline_interpolation

У разных сплайнов разные характеристики. Чаще всего используются сплайны Акима и Кубик.

Другой алгоритм, который следует рассмотреть, - это алгоритм упрощения линий Рамера-Дугласа-Пекера, он довольно часто используется для упрощения данных GPS. ( http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm )

Возможность интерполировать значения между вашими известными значениями дает вам приятный плавный переход и / разумное / приближение того, какие данные были бы представлены, если бы у вас была более высокая точность. http://en.wikipedia.org/wiki/Spline_interpolation

У разных сплайнов разные характеристики. Чаще всего используются сплайны Акима и Кубик.

Другой алгоритм, который следует рассмотреть, - это алгоритм упрощения линий Рамера-Дугласа-Пекера, он довольно часто используется для упрощения данных GPS. ( http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm )

org / wiki / Spline_interpolation

У разных сплайнов разные характеристики. Чаще всего используются сплайны Акима и Кубик.

Другой алгоритм, который следует рассмотреть, - это алгоритм упрощения линий Рамера-Дугласа-Пекера, он довольно часто используется для упрощения данных GPS. ( http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm )

org / wiki / Spline_interpolation

У разных сплайнов разные характеристики. Чаще всего используются сплайны Акима и Кубик.

Другой алгоритм, который следует рассмотреть, - это алгоритм упрощения линий Рамера-Дугласа-Пекера, он довольно часто используется для упрощения данных GPS. ( http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm )

3
ответ дан 23 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: