在Matlab中优化生成随机数

时间:2017-06-04 10:36:32

标签: matlab optimization

我有一个2×1×10 ^ 3矩阵,其元素在模拟循环的每一步都会发生变化。为了在每个for循环步骤中找到一个新元素,我需要2 * 1000个高斯随机数。循环步数等于10 ^ 5。在这种情况下哪种方法耗时较少?

  1. 在for循环之前创建两个10 ^ 5乘1000随机矩阵并在循环内调用它们。

  2. 在循环的每一步中创建两个1乘10 ^ 3的随机矩阵?

1 个答案:

答案 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

所以,在我的机器上,使用循环更快。