MATLAB平均每5个元素

MATLAB平均每5个元素,matlab,matrix,average,Matlab,Matrix,Average,我想取一个大矩阵,取其中所有5x5网格的平均值 矩阵是245x85x1255。我将矩阵重塑为5x4165x1255大小(z维度没有那么重要),我想取每行元素1:5、5:10、10:15等的平均值。然后,通过得到的矩阵,我想平均五列。然后我将调整它的大小回到它的原始形状(当然更小) 我不必这样做。我只需要取一个5x5的网格,并平均其中的所有点。然后我取它旁边的下一个5x5网格,平均所有这些点 以下是我在第一个5x5网格中的实现方式: A = data_SpecificArea(:,1:5,:);

我想取一个大矩阵,取其中所有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
你可以用它。比如说,

fun = @(block_struct) mean(block_struct.data);
new_matrix = blockproc(old_matrix,[5 5],fun);

相邻区块的重叠是否有意
1:5
是5个元素,但
5:10
是6个元素,与上一个块重叠。也许你在找
1:5
6:10
11:15
。。。在这种情况下,您应该使用
1:5:4161
而不是
1:4:4161