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

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -