У меня есть сбор данных, где в каждой записи есть информация о скорости транспортного средства и времени, когда эта запись была сделана. Разница во времени между каждой записью различна и составляет около 300 мс. Я использую эту коллекцию для расчета пройденного расстояния. Я бы хотел обрезать эту коллекцию без слишком большой потери точности вычислений. Есть ли какой-нибудь алгоритм?Обрезная коллекция, используемая для расчета расстояния
Я попытался написать простой алгоритм, который удалил запись, если запись не отличается от предыдущей, по крайней мере, на X%. Этот алгоритм работает неправильно. Например, когда я использовал алгоритм с 3% и 4% обрезкой, количество записей было таким же, но расчетное расстояние отличалось на 40 м на расстоянии 500 м, где 4% было более точным.
EDIT: Изменения Benjamin алгоритма:
у меня есть время, когда запись была собрана, поэтому мне нужно 3 записей.
double timeDifference = (next.time - curr.time)/(curr.time - previous.time); previuos.value = (previous.value + curr.value * timeDifference)/2
Кроме того, я не хочу, чтобы результат двойной, но долго так что мне нужно использовать округление, что изменит расстояние. Также одна минута составляет около 300 записей, поэтому я надеюсь, что округление не повлияет на вычисления.
Вы можете использовать BigDecimal, если вам нужна точность, но это снизит производительность, но, возможно, это не имеет значения для вас. –