首页 > 解决方案 > 如何在 Matlab 中按间隔对 3d 矩阵行求和?

问题描述

36x256x2232在 Matlab 中创建了一个 3d 矩阵,M = ones(36,256,2232)我想通过按间隔 3 对行求和来减小矩阵的大小。结果矩阵应该是12x256x2232并且每个单元格的值应该是 3。

我尝试使用reshapesum功能,但我得到 1x256x2232 矩阵。

我怎样才能做到这一点而不使用for-loop

标签: matlabmatrix

解决方案


这应该这样做:

M = ones(36,256,2232)
reduced = reshape(sum(reshape(M, 3,[], 256,2232), 1),[], 256, 2232);
  • reshape用给定的间隔制作一个 4d 矩阵
  • sum减少它
  • 第二个 reshape 再次将其转换为 3d

您也可以使用squeeze,它会删除单件维度:

reduced = squeeze(sum(reshape(M, 3,[], 256,2232), 1));

推荐阅读