我在 matlab 中编写了一个小循环来生成随机 NxN 矩阵。循环是
tic
for i=1:10000
u=rand(1,10000);
tau(i,:)=d.*(u(1,:)-0.5);
end
toc
我第一次只尝试了一次循环例程,
u=rand(1,10000);
tau=d.*(u(1,:)-0.5);
这在 0.000169 秒内给了我 tau。我假设循环将花费大约 1.69 秒。没有,粉丝们疯狂地花了 555.018280 秒。
是否有
a)速度与迭代次数不呈线性关系的原因?
b)为什么多次执行例程需要更长的时间的原因c)
加速这个的方法(我实际上想生成更大的矩阵),例如更好的循环或给我的方法,比如说,同类型的 1'000'000x1'000'000 矩阵?