平均3D矩阵中的块

时间:2017-11-16 00:30:42

标签: arrays matlab matrix multidimensional-array

我有一个40×40×20阵列。我想在第三维中平均一个5的块,这样我的输出矩阵就是40×40×4。

我尝试了以下内容:

out = zeros(size(data,1), size(data,2), size(data,3)/5);
c = 1;

for i = 1:5:size(data,3)
    out(:,:,c) = nanmean(data(:,:,i:i+5-1),3);
    c = c + 1;
end

1 个答案:

答案 0 :(得分:2)

您可以按以下步骤操作:

  1. 重塑为4D数组,使每个块的内容沿第3维对齐,不同的块对应不同的第4维位置;
  2. 第三维平均值;
  3. 删除第三个维度,现在是单身,通过将其置换到最后。
  4. 代码:

    N = 5;                                                   % block size
    out = reshape(data, size(data,1), size(data,2), N, []);  % step 1
    out = nanmean(out, 3);                                   % step 2
    out = permute(out, [1 2 4 3]);                           % step 3