Create time intervals of a time vector

Hi everyone!
I´m trying to create 15-minute intervals of a time vector. My original time vector is as follows:
09:00:16
09:00:17
09:00:18
09:00:25
...
09:15:16
09:15:17
..
09:30:16
09:30:17
..
up to the closing hour of the exchange
17:30:00
Is there anyway I could reduce this time vector to just something like :
09:00:00
09:15:00
09:30:00
09:45:00
10:00:00
up until the closing of the exchange
...
17:15:00
17:30:00
I would really appreciate any help, because I have been trying first to convert the time vector into numeric data and from that calculating the 15-minute intervals, but from there I don´t know how to bring it back to a time vector format. Especially because I am also computing 15-minute intervals of stock prices and I need to have it all together in a matrix of file together like this :
All=[Date Time Stock Price]
Once again thank you very much and have a very nice weekend :)
Lourdes

 Accepted Answer

Vector of 9:00 - 17:30 with 15 mins increments (24 hours a day, 96 quarters a day)
dv = 9/24:1/96:17/24+2/96;
Visualize result
datestr(dv)
ans =
9:00 AM
9:15 AM
...
5:30 PM
If you want to apply the solution to a range of days (eventually excluding saturdays and sundays):
1. Initial and final date
infi = {'15/01/2011'
'17/01/2011'};
days = infi(1):infi(2);
infi = datenum(infi,'dd/mm/yyyy');
2. Exclude sundays and saturdays (uncomment)
% days = days(~ismember(weekday(days),[1 7]));
3. Add dv
out = bsxfun(@plus, days, dv.');
4. Visualize result
datestr(out)

4 Comments

Dear Oleg,
Thank you so much for your reply! It has been really helpful! I´m actually just using monday to friday dates and what you proposed works wonderfully, but I have a tiny question. Since these 15-min intervals also include 15-min intervals of stock prices which I have as doubles, when I try to create a matrix containing both strings a doubles, Matlab says there is a problem with horzcat. I wanted something like this :
date(string) hour(string) price1(double) price2(double)
Is there anyway I could have this all put together into a matrix form or save it as a .mat file? I´m sorry to ask but I´m kind of learning by doing and I don´t know much of Matlab.
Thank you for helping me :)
Lourdes
You cannot concatenate strings with double in a matrix (or more generally in a double array).
You should use a cell array:
{'01/01/2001' '09:30 AM' 23.23 23.29
'01/01/2001' '09:45 AM' 23.15 0.01} % Oh noooooooooo!!!! :)
If you want to save it as a txt, then go ahead and use the cell array.
Otherwise, I would suggest to keep the numeric dates:
- less memory consumption
- faster
- easier to manipulate
If you're gonna use several days for several securities you're not gonna scroll visually the dates anyways!
Dear Oleg,
Thank you so much for your help! I still don´t know what to do, because as you say, I have several days for several securities, and I need kind of an efficient way of visualizing the data set as
Day Hour Stock Price1 Price 2
and I guess saving my output as a .mat files seems a bit easier for me because I have so much trouble loading .txt files using textscan :S. Is there a way of going back from numeric dates to normal dates?
Have a nice weekend!! :)
You can plot the series with the numeric dates and then use datetick to adapt to convert the labels to the desired date format (more feasible than scroolling down a cell array)
In general, to convert the numeric date to stringdate use datestr.
If you have troubles with textscan, open a new thread, post the first lines of your file, the code you're using (formatted), any error and the request for what you're trying to achieve.

Sign in to comment.

More Answers (0)

Categories

Find more on Financial Toolbox in Help Center and File Exchange

Asked:

Lu
on 14 May 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!