【发布时间】:2020-03-25 12:38:27
【问题描述】:
在 Matlab 中,我有一个 64x64x256x256 矩阵 A。我想对最后 2 个维度的每个第 4 个元素进行平均,以获得一个 64^4 的矩阵。以前我使用 2 个 for 循环来完成此操作,但是速度很慢,我想加快速度。
for n2 = 1:pts
tmp_Matrix(:,:,:,n2) = sum(Matrix_A(:,:,:,(1+numAvg*(n2-1):n2*numAvg)),4)/numAvg;
end
for n1 = 1:pts
Final_Matrix(:,:,n1,:) = sum(tmp_Matrix(:,:,(1+numAvg*(n1-1):n1*numAvg),:),3)/numAvg;
end
还有一些其他类似的问题,但他们处理的是二维矩阵,并没有扩展到更高的维度。任何建议将不胜感激!
【问题讨论】:
-
您的代码平均了 N 个元素的组,而不是每个第 N 个元素。您是否预先分配了输出数组?预分配是加快循环速度的关键。
标签: matlab matrix vectorization mean