Работая в C ++, у меня есть данные временных рядов, сгенерированные с интервалом в одну секунду, например:
Data begins;
2014 Dec 14 13:59:57 8.7
2014 Dec 14 13:59:58 6.6
2014 Dec 14 13:59:59 2.1
2014 Dec 14 14:00:00 0.5
2014 Dec 14 14:00:01 2.3
2014 Dec 14 14:00:02 3.5
2014 Dec 14 14:00:04 1.0 <--- Intentional gap; could be that no data is generated in a given second
2014 Dec 14 14:00:05 7.3
2014 Dec 14 14:00:06 4.8
and so on ........
Отметки времени имеют boost::posix_time::ptime
тип.
Я хотел бы взять эти данные и синтезировать из них данные временных рядов с большими интервалами, например, 2, 5, 10 секунд или любое другое целое кратное число.
Значение, связанное с любым заданным интервалом, будет средним значением из этого предыдущего количества секунд.
Таким образом, значение временного ряда первого 2-секундного интервала будет средним значением;
2014 Dec 14 13:59:57 8.7
2014 Dec 14 13:59:58 6.6
и сам будет;
2014 Dec 14 13:59:58 7.7 <-- first synthesized 2 second interval time-series data element.
Теперь ряд исходных данных может начаться в любое время. Я хотел бы сделать так, чтобы синтезированные интервалы временных рядов совпадали с их естественными целыми кратными и натуральными точками во времени.
Таким образом, первый элемент данных с 5-секундным интервалом будет представлять собой среднее значение ТОЛЬКО четырех предыдущих 1-секундных элементов данных:
2014 Dec 14 13:59:57 8.7
2014 Dec 14 13:59:58 6.6
2014 Dec 14 13:59:59 2.1
2014 Dec 14 14:00:00 0.5
дать:
2014 Dec 14 14:00:00 4.5 <--- first synthesized 5 second interval time-series data element.
и при естественном повороте минуты и часа новое 5-секундное накопление начнется в:
2014 Dec 14 14:00:01 2.3
Это будет принимать значения;
2014 Dec 14 14:00:01 2.3
2014 Dec 14 14:00:02 3.5
2014 Dec 14 14:00:04 1.0 <--- Intentional gap; could be that no data is generated in a given second
2014 Dec 14 14:00:05 7.3
и синтезировать их в:
2014 Dec 14 14:00:05 3.5 <---- Aligned second synthesized 5 second interval time-series data element.
Я впервые пытаюсь это сделать, поэтому я хотел бы спросить предложения библиотек с открытым исходным кодом, которые выполняют такую функциональность или подходы, которые я мог бы использовать для достижения цели синтеза временных рядов с более высокими интервалами в C ++?
Задача ещё не решена.