一周的每小时数据的平均日
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 );
我有一个包含 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 );