MATLAB: 15 minutes intervals

time seriestime stamp

Hi everyone!
I have some mat files that look kind of like this:
19.10.09 09:00:16 1BASF.DE 39.45 39.43 39.41
19.10.09 09:00:16 1BASF.DE 39.45 39.44 39.43
19.10.09 09:00:20 1BASF.DE 39.46 39.45 39.43
… … … … … …
19.10.09 09:14:57 1BASF.DE 39.72 39.71 39.7
19.10.09 09:14:58 1BASF.DE 39.72 39.71 39.7
19.10.09 09:15:02 1BASF.DE 39.72 39.71 39.7
19.10.09 09:15:02 1BASF.DE 39.72 39.71 39.7
so the first colum is the date, the second column is the time stamp, the third is the name of the stock and the rest are prices. I want to create 15-minutes intervals that go from 9:00-9:15 am, then 9:15-9:30 am and so on until the end of the day and for these intervals the average price of the stock is taken. Do you have any ideas of how to make this?
I have seen people using datenum and the calculating the intervals , but the problem here is that my date and time stamps are in different columns and I dont know how to do it then.
Also, the timestamp column is a cell. Do you have any ideas that could help me out?
I would really appreciate it 🙂
Have a nice day!

Best Answer

Determine the first date of the range. Find the datenum() of midnight on that day. Convert the other values in to datenum() and subtract that base of midnight. Divide the resulting difference by (15*60)/(24*60*60) = 1/(24*60/15) = 1/(24*4) = 1/96 -- so multiply by 96 to do the division. Take the floor() of the result and that vector will be the number of 15 minute bins since midnight on the base date.
Once you have those bin numbers, you can add 1 to each of them and use the result as the subscript for the purposes of accumarray:
accumarray(1+binnum(:), stockprice(:), [], @mean)