matlab - 如何在 Matlab 中按间隔对 3d 矩阵行求和?
问题描述
我36x256x2232
在 Matlab 中创建了一个 3d 矩阵,M = ones(36,256,2232)
我想通过按间隔 3 对行求和来减小矩阵的大小。结果矩阵应该是12x256x2232
并且每个单元格的值应该是 3。
我尝试使用reshape
和sum
功能,但我得到 1x256x2232 矩阵。
我怎样才能做到这一点而不使用for-loop
?
解决方案
这应该这样做:
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));
推荐阅读
- flow-project - 找不到满足要求的版本 ray==0.8.0
- excel - Lotus Notes 自动化错误:调用的对象已与其客户端断开连接
- android - 错误:“PhoneAuthCredential”不是类型
- sql - 根据条件从数组中提取值
- sql - SQL Server 地理 - 查找国际日期变更线和赤道
- angular - 如何使用表单构建器验证具有动态值的表单数组
- xml - 从 VB.net 中的 API 帖子中捕获传入的 XML
- javascript - 使用 JS / jQuery 删除嵌套 Div 网格(不是 html 表)的空“行”
- python - 我正在制作一个软件,它有一个从按下按钮开始的线程。但即使是在有条件的while循环下,我也无法停止它
- webpack - 如何使用 webpack 保持导出?