Hi,
I have used accumarray to minutely median average a vector, s_temp using a datenum vector time_temp:
[Yr,Mt,Dy,Hr,Mn,~] = datevec(time_temp(1));t_zero = datenum(Yr,Mt,Dy,Hr,Mn,0);[Yr,Mt,Dy,Hr,Mn, ~] = datevec(time_temp(end));t_end = datenum(Yr,Mt,Dy,Hr,Mn+1,0);tbin = (t_zero:1/24/60:t_end).';[~, idx] = histc(time_temp, tbin);sz = [max(idx) 1];s_median = accumarray(idx, s_temp, sz, @median, NaN);
Then I have tested the timetable function to do the same (out of curiosity):
ts = timetable(datetime(time_temp,'ConvertFrom','datenum'),s_temp);TS = retime(ts,'minutely',@median);
The estimated median values unfortunately disagree occassionally, and I have realized that the problem is related to the datetime function. It seems like it rounds the datenum value to the seventh decimal place. See the example below:
RunDate=7.372784756944444e+05;datestr(RunDate)datetime(RunDate,'ConvertFrom','datenum')
Is there a way to come around this problem or anybody else who has encountered it?
Grateful for any help!
Best Answer