我有一个24 * 7行的矩阵(列周的每小时数据)和52列(一年中的星期)。
我想计算每周的平均日(24小时)(由24×52矩阵计算)。 Normaly我会reshape
来自每周的向量,这样我就可以有24行和7列然后我可以从每小时得到平均值,从而产生该周的平均日。
然而,这一年有52周,所以这reshape
是不现实的。
有没有人知道如何计算一天中每小时的平均值,以便在不重塑每周初始列的情况下创建一个平均日?
答案 0 :(得分:2)
我不明白为什么不使用reshape
?
reshaped = reshape( allData, [24 7 52] );
avg = mean( reshaped, 2 ); %// average over the seven days
您最后可能想要squeeze
结果......
答案 1 :(得分:0)
如果你真的真的不想使用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 );