【发布时间】:2012-11-07 11:23:47
【问题描述】:
我在 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 相同类型的矩阵?
【问题讨论】:
-
尝试预分配
tau。 -
有一个名为加速 MATLAB 应用程序的网络研讨会。有一些关于大型矩阵以及如何处理它们的信息。 mathworks.com/company/events/webinars/…
标签: performance matlab random for-loop matrix