我有一个2×1×10 ^ 3矩阵,其元素在模拟循环的每一步都会发生变化。为了在每个for循环步骤中找到一个新元素,我需要2 * 1000个高斯随机数。循环步数等于10 ^ 5。在这种情况下哪种方法耗时较少?
在for循环之前创建两个10 ^ 5乘1000随机矩阵并在循环内调用它们。
在循环的每一步中创建两个1乘10 ^ 3的随机矩阵?
答案 0 :(得分:0)
这是一个回答你问题的小代码:
function rnd_time_test
rnd_test = @(n) randn(2,n,1000);
N = 1e5;
one_time = timeit(@() rnd_test(N))
loop_time = timeit(@() rnd_test_loop(N))
function R = rnd_test_loop(n)
for k = 1:n
R = randn(2,1000);
end
end
end
结果:
one_time =
2.245
loop_time =
1.6311
所以,在我的机器上,使用循环更快。