什么是时间执行比randperm更快的另一种逻辑

时间:2012-08-30 17:41:18

标签: matlab random

我是新的matlab用户。 现在,我正在使用matlab软件开展工作。但我有问题改进我的代码,以便快速执行。 现在,我必须制作一个矩阵(A,10,C)),其值为整数[1 10]。 目前,我正在使用逻辑randperm。在这里我的代码:

for c=1:C,
   for a=1:A,
       result(a,:,c)=randperm(10);
   end
end

但是当我尝试使用个人资料查看器进行分析时。该代码需要更多时间。

所以我希望有人想分享他/她的经历。 谢谢。 方面

2 个答案:

答案 0 :(得分:1)

这是一个替代解决方案,但它没有关于随机数分布的randperm的良好属性:

[~,result_alt] = sort( rand(A,10,C) , 2);

快速配置文件显示,A = C = 10时,您的方法平均需要大约1.6e-3秒,而此方法平均需要5.6e-5秒。

注意:

较早版本的MATLAB不支持~运算符。如果是这样,请尝试:

[vals result_alt] = sort( rand(A,10,C) , 2);

并忽略vals

答案 1 :(得分:0)

这一定很快。

result = ceil(10 * rand(A, 10, C));