我以30分钟的间隔测量了一些变量。时间戳以datevec
或datenum
格式提供。我想计算......
a)...每日平均值和
b)......时间x
的平均值,例如11:30的温度,12点的温度,等于我整个数据集的平均值。
虽然这或多或少都可以轻松完成循环,但我想知道是否有更简单/更方便的方法来处理时间序列,因为这毕竟是一个非常基本的任务?
/编辑1:根据请求:click me for sample data
答案 0 :(得分:6)
考虑datevec()
输出存储在tvec
中,数据存储在x
中,与unique(...,'rows')
组合并累积accumarray()
:
% Group by day
[unDates, ~, subs] = unique(tvec(:,1:3),'rows');
% Accumulate by day
[unDates accumarray(subs, x, [], @mean)]
% Similarly by hour
[unHours, ~, subs] = unique(tvec(:,4:5),'rows');
[unHours accumarray(subs, x, [], @mean)]