# calculate week of year

27 views (last 30 days)
Richard on 18 Dec 2012
Answered: Steven Lord on 27 Mar 2020
I have an annual time series where measurements are recorded at hourly intervals:
StartDate = '2011-01-01 00:00';
EndDate = '2011-12-031 23:00';
DateTime=datevec(datenum(StartDate,'yyyy-mm-dd HH:MM'):60/(60*24):...
datenum(EndDate,'yyyy-mm-dd HH:MM'));
dat = 2+(20-2).*rand(size(DateTime,1),1);
I would like to calculate the mean 24 hour cycle for each week of the year i.e. for week 1, day of year 1 to 7 I want to calculate the average 00:00, 01:00,... and so on so eventually I will end up with 52, 24 hour series i.e. one for each week of the year. Matlab does have a function called 'weeknum' which returns the week number from a given seriel date number, however, this function is in the financial toolbox. Can anyone suggest an alternative methdo for finding week number?

Jan on 18 Dec 2012
function weekOfYear = yourWeekNum(s)
% Get 1st of January of the year:
v = datevec(s);
v1 = v;
v1(:, 2:3) = 1;
v1(:, 4:6) = 0;
s1 = datenum(v1);
dayOfYear = s - s1;
weekOfYear = floor(dayOfYear / 7) + 1;
Please check this, because it is written in the editor and not tested.

Richard on 18 Dec 2012
works great.
DWag on 27 Mar 2020
Yes it's great! And just a note for whoever uses it in the future, choose a date and double-check it to make sure it rounds to your needs. I rounded up isntead of having partial days.

Steven Lord on 27 Mar 2020
Since the original question was written, we introduced datetime. If you're representing your time and date data as a datetime, call week on your datetime with 'weekofyear' as the weekType input.