一周的每小时数据的平均日

Mean day with hourly data from a week

我有一个包含 24*7 行(列周的每小时数据)和 52 列(一年中的几周)的矩阵。

我想计算每周的平均天数(24 小时)(产生一个 24×52 矩阵)。通常我会 reshape 每周的矢量,这样我就可以有 24 行和 7 列,然后我可以从每个小时取平均值,从而得到该周的平均一天。

但是一年有52周,所以reshape不现实。 有谁知道如何计算一天中每小时的平均值,以便在不重塑每周初始列的情况下使用创建一个平均日?

我不明白为什么不用reshape

reshaped = reshape( allData, [24 7 52] );
avg = mean( reshaped, 2 ); %// average over the seven days

您可能希望 squeeze 最后的结果...

如果你真的真的真的不想用reshape,你可以用accumarray
首先构造将 24*7×52 输入中的输入与 24×52 输出相关联的索引:

rows = repmat( 1:24, [1 7*52] );
cols = repmat( 1:52, [7*24 1] );
avg = accumarray( [rows(:) cols(:)], allData(:), [24 52], @mean );