datetime - Logically index Data based upon two date time arrays in matlab -
i jump straight minimal example find difficult put words. have following example:
data.startdate=[datetime(2000,1,1,0,0,0) datetime(2000,1,2,0,0,0) datetime(2000,1,3,0,0,0) datetime(2000,1,4,0,0,0)]; data.enddate=[datetime(2000,1,1,24,0,0) datetime(2000,1,2,24,0,0) datetime(2000,1,3,24,0,0) datetime(2000,1,4,24,0,0)]; data.value=[0.5 0.1 0.2 0.4]; event_start=[datetime(2000,1,1,12,20,0) datetime(2000,1,1,16,0,0) datetime(2000,1,4,8,0,0)]; event_end=[datetime(2000,1,1,14,20,0) datetime(2000,1,1,23,0,0) datetime(2000,1,4,16,0,0)]; what want add flag data structure (say 1) if time between data.startdate , data.enddate falls between event_start , event_end. in example above data.flag have have values 1 0 0 1 because event_start , event_end vectors can see there events on january 1st , january 4th. idea use flag process data further.
i sure straightforward appreciate can give.
i convert dates numbers using datenum, allows convenient comparisons using bsxfun:
isstartbeforeevent = bsxfun(@gt,datenum(event_start)',datenum(data.startdate)); isendafterevent = bsxfun(@lt,datenum(event_end)',datenum(data.enddate)); flag = any(isstartbeforeevent & isendafterevent, 1)
Comments
Post a Comment