Аппаратный датчик сэмплирован точно (точный период выборки) с использованием устройства реального времени. Однако значение времени не отправляется в базу данных вместе с выбранным значением. Вместо этого время внесения записи в базу данных сохраняется для образца в базе данных. Используется тип DATETIME
, а функция GETDATE()
используется для получения текущего времени (Microsoft SQL Server).Как определить точный интервал выборки из образцов, хранящихся в базе данных?
Как я могу восстановить точное время выборки?
В качестве интервала выборки (должно быть) 60 секунд точно было не нужно раньше для более точного решения. (Это старое решение, третье лицо, с большим количеством исторических образцов. Таким образом, невозможно исправить дизайн.)
Для обработки образцов мне нужно восстановить правильные временные экземпляры для образцов , Нет никакой проблемы с изменением времени всей последовательности (то есть, не имеет значения, является ли время начала скорее выключенным, а не абсолютным). С другой стороны, интервал выборки должен быть определен как можно точнее. Я также не могу быть уверен, что интервал выборки составлял ровно 60 секунд (как упоминалось выше). Я также не могу быть уверен, что интервал выборки был действительно постоянным (скажем, небольшими различиями, основанными на температуре устройства).
При обработке образцов, я хочу получить:
- Время начала
- интервал выборки
- последовательность о выборке значений
При реконструкции образцов, мне нужно для его преобразования в кортежи:
- время выборки
- значение образца
Из-за этого, для последовательности с п образцов, время последнего образца должна быть равна start_time + sampling_interval * (n - 1)
, и она должна быть достаточно близко к исходное время окончания, хранящееся в базе данных.
Подумайте о том, что хранимые образцы времени немного осциллируют относительно реальных выборок (постоянная задержка между выборкой и вставкой в базу данных здесь не проблема).
Я думал о вычислении среднего значения и скорректированного стандартного отклонения для интервала, вычисленного из предыдущего и текущего времени выборки.
обнаружение прерывистости: Если расчетный интервал больше, чем 3 сигмы от среднего значения, я считал бы разрыв отобранных кривым (скажем, машина выключается, или любое внешнее свинцовое событие недостающих выборок В этом случае я хочу начать с обработки новой последовательности (частота выборки также может быть изменена.)
Есть ли хорошо известный подход к проблеме. Если да, можете ли вы указать мне на статью (s)?Или вы можете дать мне имя или аббревиатуру алгоритма?
Я бы начал с вычисления разницы между сохраненной меткой времени для каждого значения и ее предшественником и просмотром этих значений. – mcdowella
Спасибо за предложение. Во всяком случае, есть еще несколько способов расчета периода. Я обеспокоен накопленными ошибками. (Хорошо, я могу попробовать экспериментально, но ...) Если рассчитать интервал от текущего минус первый образец, деленный на количество периодов, я, вероятно, также получу среднее значение, и я, вероятно, сделаю это «на лету», так же, как и здесь для отклонения https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Computing_shifted_data. Я просто обволакиваю голову, чтобы отладить эту идею. – pepr
Мой предыдущий комментарий о вычислении интервала выборки из большего количества образцов - это вздор. Причина в том, что при наличии большого количества образцов один недостающий образец не будет иметь никакого значения - и это должно иметь значение. – pepr