Efficiently find most recent value using TIME column in two tables

1 view (last 30 days)
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

Hans Meier
Hans Meier on 21 Oct 2019
Ok, here's one solution:
data.ref = interp1(ref.TIME, ref.ref data.TIME, 'previous');

More Answers (0)

Community Treasure Hunt

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

Start Hunting!