1

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

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

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

所以我希望有人想分享他/她的经验。感谢您。看待

4

2 回答 2

1

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

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

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

笔记:

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

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

并忽略vals

于 2012-08-30T18:01:45.480 回答
0

这必须很快。

result = ceil(10 * rand(A, 10, C));
于 2012-08-30T19:26:18.723 回答