2013-07-05 197 views
0

我想要一個大矩陣並取其中所有5x5網格的平均值。MATLAB平均每5個元素

矩陣是245x85x1255.I將矩陣重塑爲5x4165x1255大小(z維並不重要),我想要取每行中元素1:5,5:10,10:15等的平均值。然後,結果矩陣,我想平均五列。然後我會調整它的原始形狀(但當然小)。

我不必這樣做。我只需要採取一個5x5的網格和平均所有的點。然後我把下一個5x5的網格放在它旁邊並且平均所有這些點。

以下是我做的第一個5×5格:

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:5'是5個元素,而'5:10'是6個元素並且與前一個塊重疊。也許你正在尋找'1:5','6:10','11:15' ......在這種情況下,你應該使用'1:5:4161'而不是'1:4:4161' –

回答

1

工作代碼,您可以使用blockproc了點。例如,

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