MATLAB Answers

retime only for specific gaps on time

14 views (last 30 days)
Rub Ron
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 Comment

dpb
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
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 Comments

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Tags