MATLAB Answers


how to find nearest date corresponding value ?

Asked by pruth
on 17 Oct 2019
Latest activity Commented on by pruth
on 17 Oct 2019
Hi, i am really stuck here and can not move ahead !
i have written this code to match the date which works fine as expected.
load('date.mat ');
load('AOD.mat ');
N = AOD_440(:,1);
V = A(:,1);
B = repmat(N,[1 length(V)])
[minValue,closestIndex] = min(abs(B-V'));
closestValue = N(closestIndex);
but here AOD_440 has second column which has some values. so when above code is finding its closest date it should put the corresponding value in second column !
how can we just update the above code ?
or do I need to write different method code ?
i hope you understand the question !


Have you considered working with timetables? That way you would not have to deal with repmat to find the closest dates.
I presume A and AOD_440(:,1) are proper dates encoded in a datenum fashion.
sampleTime = datetime(AOD_440(:,1),'ConvertFrom','datenum');
queryTime = datetime(A,'ConvertFrom','datenum');
TT = timetable(AOD_440(:,2),'RowTimes',sampleTime)
TT2 = retime(TT,queryTime,'nearest')
If you wanted the timestamp of the samples nearest to the queryTimes you can add sampleTime as another variable to the timetable.
Thats works fine too !! thanks !

Sign in to comment.

1 Answer

Answer by Jos (10584)
on 17 Oct 2019
 Accepted Answer

Does this return what you want?
R = AOD_440(closestIndex, [1 2]) % select first (date?) and second (values?) columns

  1 Comment

seriously ???? it was that easy ??

Sign in to comment.