1

私は新しい matlab ユーザーです。現在、matlab ソフトウェアを使用して作業を行っています。しかし、実行時間を短縮するためにコードを改善するのに問題があります。今、値が整数 [ 1 10] の行列 (A,10,C)) を作成する必要があります。現在、私はロジックを使用してい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);

A = C = 10簡単なプロファイルは、このメソッドが平均で 5.6e-5 秒かかるのに対し、このメソッドは平均で約 1.6e-3 秒かかることを示しています。

ノート:

古いバージョンの 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 に答える