【发布时间】:2013-07-05 20:04:06
【问题描述】:
我想取一个大矩阵并取其中所有 5x5 网格的平均值。
矩阵为 245x85x1255。我将矩阵重新整形为 5x4165x1255 大小(z 维度并不那么重要),我想取每行中元素 1:5、5:10、10:15 等的平均值。然后,使用生成的矩阵,我想平均五列。然后我将它调整回原来的形状(但当然更小)。
我不必这样做。我只需要取一个 5x5 的网格并平均其中的所有点。然后我取它旁边的下一个 5x5 网格并平均所有这些点。
这是我对第一个 5x5 网格的做法:
A = data_SpecificArea(:,1:5,:);
B = mean(A,2);
C = mean(B,1);
** 这是使用 blockproc 的工作代码
% Change dataAll_SpecificArea to a 1x1 degree grid (5x5 block averaging)
fun = @(block_struct) mean(block_struct.data);
A = blockproc(dataAll_SpecificArea,[5 1],fun); % Size goes from 245x85x1255 to 49x85x1255
B = blockproc(A,[1 5],fun); % Size is 49x17x1255
【问题讨论】:
-
相邻块的重叠是故意的吗?
1:5是 5 个元素,但5:10是 6 个元素并与前一个块重叠。也许您正在寻找1:5、6:10、11:15、...在这种情况下,您应该使用1:5:4161而不是1:4:4161