LINUX.ORG.RU

монотонность времени

 gnss,


1

1

А не подскажете ли алгоритм для обеспечения монотонности времени?

Есть зашумленный источник «абсолютного» времени, с выбросами вперед и назад, выбросы могут длиться порядка минут, и быть даже на несколько лет вперед или назад. Есть также таймер, позволяющий приблизительно считать «относительное» время. Задача строить монотонно возрастающую последовательность секунд, то есть фильтровать источник с достаточной достоверностью. Скачки вперед-назад не должны превышать едениц минут, и время должно оставаться в достаточной близости от реального, без накапливающихся отклонений. Других источников «абсолютного» времени - нет.

★★★★★

Пришел пакетик с «абсолютным» временем , оно от относительного отстаёт на минуту, увеличиваешь счетчик пакетов «с отставанием на минуту» на 1, так всё «абсолютное время» сортируешь. Потом в 12 часов ночи по Москве смотришь - ба! да у меня 10 000 пакетов с разницей в 3 минуты , 11 в десять минут и 1 за прошлый год. Переводишь относительное время на 3 минуты.

зы. Ну как понял, так и придумал.

ilovewindows ★★★★★
()

dt - величина очередного изменения времени от таймера
dT - величина очередного изменения времени от источника
k - множитель времени таймера
K - ограничитель множителя времени таймера
k/K>0 - время идет медленнее таймера
k/K<0 - время идет быстрее таймера
T - текущее время
по приходу dt: T=T+dt*(1+k/K)
по приходу dT:
если dT>0 то k=k+1,
если dT<0 то k=k-1,
если k>+K то k=+K,
если k<-K то k=-K
только со знаками dt и dT нужно не перепутать, но вариантов перебора мало.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.