retime only for specific gaps on time
4 次查看(过去 30 天)
显示 更早的评论
I have a timetable z with more than 10 000 rows, this timetable should have a resolution of 15 minutes, but there are gaps of for example 30,45 minutes, 1, 5, 8 hours, or even days. So I would like to fill the missing data using retime but only for the gaps lower or equal to a specific gap (for example 1 hour). How can I do that? I have search for ways of doing that, but have found no hint. I am using this line, but it fills all the gaps.
retime(z,'regular','linear','TimeStep',minutes(15))
Any help would be very much appreciatted.
1 个评论
dpb
2019-8-14
No builtin method I know of...first thought comes to my mind would be to build a corollary variable of the time gap values exceeding your threshold and then removing the interpolated rows between those time intervals after retime does its thing.
采纳的回答
Akira Agata
2019-8-15
编辑:Akira Agata
2019-8-15
How about the following solution?
% Sample timetable with 2 gaps (e.g >1 hour)
Time = datetime('now') + minutes(cumsum(45*rand(100,1)));
Time(30:end) = Time(30:end) + hours(1); % Gap1
Time(60:end) = Time(60:end) + hours(1); % Gap2
Data = rand(100,1);
TT = timetable(Time,Data);
% Find gaps and create group vector
idx = diff(TT.Time) > hours(1);
idx = [true; idx];
group = cumsum(idx);
% Apply retime function for each group and concatenate the result
TT2 = [];
for kk = 1:max(group)
idx = group == kk;
TT2 = [TT2; retime(TT(idx,:),'regular','linear','TimeStep',minutes(15))];
end
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Timetables 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!