我有这个玩具示例:
l = [1, 2, 3, 4, 5];
a = zeros(3, 1);
for p = 1:3
a(p) = sum(l(p:p+2));
end;
此示例计算' l'中每3个元素的总和,它们彼此接近并将其写入' a'。现在,是否可以使用矢量化和矩阵运算重写相同的代码,而无需使用'环?我尝试过类似的东西:
p = 1:3;
a(p) = sum(l(p:p+2));
结果是[6,6,6],它计算了前三个元素的总和并将其写在' a'在每个位置。这只是一个玩具示例,但我需要在3d 256x256x128阵列上执行类似的操作,其中20x20x20立方体元素总和,使用' for'那里的循环很慢。那么,有没有一种快速解决这个问题的方法呢?
修改: 迪瓦卡建议我在这里使用我的实际案例。好吧,这是其中最重要的部分,我正在尝试重写:
编辑2: 谢谢你的答案。理解了这个想法,删除了上面的代码,现在重写它。
答案 0 :(得分:4)