Skip to main content
 首页 » 编程设计

python之为什么 matlab 中的反向 for 循环更快

2025年05月04日16zhenyulu

我最近在 MATLAB 中遇到了这个 for 循环代码,这让我感到困惑,因为反向循环可以更快地完成同样的事情。为什么会这样?

clear all 
a = rand(1000,1000); 
b = rand(1000,1000); 
 
for i=1:1000 
 for j=1:1000 
 c(i,j) = a(i,j) + b(i,j); 
 end 
end 

以及带有反向循环的相同代码:

clear all 
a = rand(1000,1000); 
b = rand(1000,1000); 
 
for i=1000:-1:1 
 for j=1000:-1:1 
 c(i,j) = a(i,j) + b(i,j); 
 end 
end 

我在 python 中用 range(1000,1,-1) 做了同样的事情,发现了相同的结果(反向循环仍然更快)。

请您参考如下方法:

由于您没有预分配输出变量 c 当您以相反的顺序进行时 c 最初在第一次 for 循环迭代后被预分配给 1000 x 1000 矩阵。当您计算 c 的大小时,每个循环都需要在每次迭代中重新分配内存,因此速度较慢。如果您打开它们,Matlab 会将其显示为警告。