MATLAB Answers

# retime only for specific gaps on time

12 views (last 30 days)
Rub Ron on 14 Aug 2019
Edited: Akira Agata on 15 Aug 2019
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 CommentShowHide None
dpb on 14 Aug 2019
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.

Sign in to comment.

### Accepted Answer

Akira Agata on 15 Aug 2019
Edited: Akira Agata on 15 Aug 2019
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 CommentsShowHide -1 older comments

Sign in to comment.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!