0
我有两个1×10^3矩阵,它的元素在模拟循环的每个步骤中都会改变。要在每个循环步骤中找到一个新元素,我需要2 * 1000个高斯随机数。循环步数等于10^5。在这种情况下哪种方法更省时间?在Matlab中优化生成随机数
在for循环之前创建两个10^5乘1000的随机矩阵并在循环内调用它们。
在循环的每一步创建两个1×10^3随机矩阵?
我有两个1×10^3矩阵,它的元素在模拟循环的每个步骤中都会改变。要在每个循环步骤中找到一个新元素,我需要2 * 1000个高斯随机数。循环步数等于10^5。在这种情况下哪种方法更省时间?在Matlab中优化生成随机数
在for循环之前创建两个10^5乘1000的随机矩阵并在循环内调用它们。
在循环的每一步创建两个1×10^3随机矩阵?
下面是一些代码来回答你的问题:
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
所以,我的机器上,使用循环更快。
相关:https://stackoverflow.com/q/39251206/3372061 –
因为for循环中有很多东西,如果我运行代码,需要数小时才能给出输出@ EBH –