MATLAB:平均没有循环的时间序列数据?

时间:2013-06-10 20:14:19

标签: matlab time-series average

我以30分钟的间隔测量了一些变量。时间戳以datevecdatenum格式提供。我想计算......

a)...每日平均值和
b)......时间x的平均值,例如11:30的温度,12点的温度,等于我整个数据集的平均值。

虽然这或多或少都可以轻松完成循环,但我想知道是否有更简单/更方便的方法来处理时间序列,因为这毕竟是一个非常基本的任务?

/编辑1:根据请求:click me for sample data

1 个答案:

答案 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)]
相关问题