0

我想取一个大矩阵并取其中所有 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
4

1 回答 1

1

您可以为此使用blockproc。例如,

fun = @(block_struct) mean(block_struct.data);
new_matrix = blockproc(old_matrix,[5 5],fun);
于 2013-07-05T20:27:51.303 回答