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!

 채택된 답변

Hans Meier
Hans Meier 2019년 10월 21일
Ok, here's one solution:
data.ref = interp1(ref.TIME, ref.ref data.TIME, 'previous');

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Tables에 대해 자세히 알아보기

질문:

2019년 10월 21일

답변:

2019년 10월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by