3

30 分間隔でいくつかの変数を測定しました。タイムスタンプはdatevecまたはdatenum形式で利用できます。計算したい...

a) ... 毎日の平均および
b) ... 時間の平均値x、たとえば 11:30 の温度、12:00 の温度など、データセット全体の平均。

これは多かれ少なかれ、ループで簡単に実行できますが、時系列を操作するためのより簡単で便利な方法があるのではないかと思います。これは結局非常に基本的なタスクなので?

/edit 1: リクエストに応じて:サンプル データについてはクリックしてください

4

1 に答える 1

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)]
于 2013-06-10T20:52:49.140 に答える