Примут следующие таймсерии (TS) с заданными значениями:Средние и синхронизировать таймсерии с различными временными метками на определенном пользователь интервал в MATLAB
time val
15:00 4
15:45 7
17:12 2.3
17:50 2.9
Каждое значение из метки времени действует до следующего появится. Таким образом, с 15:00 до 15:45 значение составляет 4 или с 15:45 до 17:12 равно 2.3. Каждая новая точка данных между этими метками времени должна иметь одинаковую ценность. То, что я хочу, это новый ts с постоянным интервалом времени и заданной начальной точкой. Предположим, что начальная точка - 15:00, а интервал - 30 минут. Обычно я могу использовать функцию синхронизации, однако функция использует метод интерполяции, и это не то, что мне нужно здесь, так как значения между точками данных не должны быть интерполированы, но усредняются, если временные метки перекрываются.
Новые TS должны быть, как:
time val
15:00 4
15:30 5.5
16:00 7
16:30 7
17:00 4.18
Значение метки времени 15:30 вычисляется как = (4 * 15 + 7 * 15)/30, и так далее. Я внедрил код, способный это исправлять, применяя функцию trapz с множеством операторов if. Тем не менее, мне было интересно, есть ли лучшие/более простые решения, как модифицированная функция синхронизации, так как у меня более 500 000 точек данных.
Заранее спасибо
Когда вы делаете среднее значение, это почти то же самое, что и интерполяция (ее фактически линейная интерполяция). Ваш средний показатель за 16:00 и 16:30 равен 7, как это работает? – GameOfThrows
Верно, но не в случае других временных меток, находящихся в пределах метки времени (например, новая временная метка 16:00, которая берет начало с отметки времени 15:45). Значение 16:00 действует с 16:00 до 16:30, а значение с 16:30 действует до 17:00. Из исходного набора данных значение, полученное за этот период, равно 7 (с отметки времени 15:45, которая действительна до 17:12) – Jonas
Я думаю, что в этом случае вы хотите округлить до ближайшей отметки времени до интерполяции. – GameOfThrows