我想采用一个大矩阵并取其中所有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
答案 0 :(得分:1)
您可以使用blockproc。例如,
fun = @(block_struct) mean(block_struct.data);
new_matrix = blockproc(old_matrix,[5 5],fun);