如何在Matlab中计算元胞内3D矩阵的均值?
解决Matlab中1×12元胞内3D矩阵的均值计算问题
方法一:正确构建4D矩阵后计算均值
你之前构建4D矩阵失败的核心原因是赋值方式错误——不能直接将3D矩阵赋值给fourdmatrix(i),需要把每个3D矩阵作为4D矩阵的第4维切片来处理。具体实现步骤:
- 先获取单个3D矩阵的维度(需确保所有元胞内矩阵维度完全一致):
[m, n, p] = size(cell{1});
- 初始化匹配维度的4D零矩阵:
fourdmatrix = zeros(m, n, p, 12);
- 循环将元胞内的3D矩阵赋值到4D矩阵的对应切片:
for i = 1:12 fourdmatrix(:,:,:,i) = cell{i}; end
- 沿第4维计算均值,得到与原3D矩阵维度一致的结果:
mean_matrix = mean(fourdmatrix, 4);
方法二:直接累加计算均值(节省内存)
如果3D矩阵体积较大,构建4D矩阵会占用过多内存,可直接通过累加后求平均:
- 初始化均值矩阵为第一个元胞的3D矩阵:
mean_matrix = cell{1};
- 循环累加剩余的11个矩阵:
for i = 2:12 mean_matrix = mean_matrix + cell{i}; end
- 最后除以矩阵总数得到均值:
mean_matrix = mean_matrix / 12;
简化写法
还可以用cat函数直接拼接4D矩阵,省去循环赋值步骤:
fourdmatrix = cat(4, cell{:}); mean_matrix = mean(fourdmatrix, 4);
注意事项
必须保证元胞内所有3D矩阵的维度完全相同(行数、列数、第三维长度均一致),否则上述方法都会报错。
内容的提问来源于stack exchange,提问作者LearningAlgorithm
相关产品推荐
相关产品推荐

