【问题标题】:Optimizing generating random number in Matlab在 Matlab 中优化生成随机数
【发布时间】:2017-06-04 10:36:32
【问题描述】:

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

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

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

【问题讨论】:

标签: matlab optimization


【解决方案1】:

这里有一个小代码来回答你的问题:

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

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

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多