在matlab中计算周数

我有一个年度时间序列,每小时记录一次测量:

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);

我想计算一年中每周的平均24小时周期,即第1周,第1年到第7天,我想计算平均00:00,01:00 ……等等,最后我将以52,24小时系列结束,即一年中每周一个. Matlab确实有一个名为’weeknum’的函数,它返回给定seriel日期编号的周数,但是,这个函数在财务工具箱中.任何人都可以提出一种寻找周数的替代方法吗?

最佳答案 也许这可以有所帮助(我使用当前的日期和时间作为例子):

c = datevec(datestr(now));
week_num = ceil(diff(datenum([c(1), 1, 1, 0, 0, 0; c])) / 7)

我不确定这个解决方案如何正确处理边缘情况,但我认为这是一个很好的起点.

您也可以使用this website验证它,告知当前的周数.

将此应用于您的示例可以完成,例如,如下所示:

weeknum = @(v)ceil(diff(datenum([v(1), 1, 1, 0, 0, 0; v(:)'])) / 7);
arrayfun(@(n)weeknum(DateTime(n, :)), 1:size(DateTime, 1))'
点赞