正如
others所建议的那样,您应该将字符串日期转换为序列日期编号.这样可以轻松使用数字数据.
计算每个间隔(天,小时,分钟等)事件数量的有效方法是使用HISTC和ACCUMARRAY之类的功能.该过程将涉及manipulating将序列日期转换为此类功能所需的单位/格式(例如ACCUMARRAY需要整数,而HISTC需要给出bin边来指定范围).
这是一个矢量化解决方案(无循环),它使用ACCUMARRAY来计算事件数.这是一个非常有效的功能(即使是大输入).在开始时,我生成一些5000个时间戳的样本数据,这些时间戳在4天的时间内不均匀间隔.你显然想用你自己的替换它:
%# lets generate some random timestamp between two points (unevenly spaced)
%# 1000 timestamps over a period of 4 days
dStart = datenum('2000-01-01'); % inclusive
dEnd = datenum('2000-01-5'); % exclusive
t = sort(dStart + (dEnd-dStart).*rand(5000,1));
%#disp( datestr(t) )
%# shift values, by using dStart as reference point
dRange = (dEnd-dStart);
tt = t - dStart;
%# number of events by day/hour/minute
numEventsDays = accumarray(fix(tt)+1, 1, [dRange*1 1]);
numEventsHours = acc