Efficiently find most recent value using TIME column in two tables

Hi everyone,
I have two large tables (> 10 million rows), one containing measurement data ("data")
  • each data point with a time stamp, approximately 2 Hz but significant jitter
one containing reference data ("ref")
  • also with one time stamp per data point, approximately 1.5 Hz but significant jitter as well
I'd like to add a column to "data" named data.ref which always contains the most recent reference point.
The following works, but is incredibly inefficient:
for k=1:numel(data.TIME)
i_mostRecent = find(ref.TIME <= data.TIME(k), 1, 'last');
data.ref(k) = ref.ref(i_mostRecent);
end
Any tips on how to get rid of the for-loop and speed things up? Thanks a lot in advance!

 Accepted Answer

Ok, here's one solution:
data.ref = interp1(ref.TIME, ref.ref data.TIME, 'previous');

More Answers (0)

Categories

Asked:

on 21 Oct 2019

Answered:

on 21 Oct 2019

Community Treasure Hunt

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

Start Hunting!