0

私は次のMATLABコードを持っています:

files = dir(fullfile(matlabroot,'toolbox','semjudge',bpic,'*.png')); 
nFiles = numel(files);
combos = nchoosek(1:nFiles, 2);
index = combos(randperm(size(combos, 1)), :); 
picture1 = files(index(nRep,1)).name;
picture2 = files(index(nRep,2)).name;
image1 = fullfile(matlabroot,'toolbox','semjudge',bpic,picture1);
image2 = fullfile(matlabroot,'toolbox','semjudge',bpic,picture2);
subplot(1,2,1); imshow(image1); 
subplot(1,2,2); imshow(image2);

指定されたディレクトリ内の画像ファイルをランダム化し、画面に表示します。ただし、2つの問題があります。

1)画像ファイルの数が非常に多いので、被写体ごとに3〜4ブロックに分割したいと思います。どうすればこれを行うことができますか?すべてのブロックの過程で、可能なすべての画像ペアが必要になるため、異なるディレクトリからそれらをプルすることはできません。これをMATLABでブロックに分割する方法がわかりません。

2)プログラムを実行するたびに、写真は同じ順序で表示されますか?なぜこれが起こるのですか?完全にランダムなはずですよね?

4

1 に答える 1

0

1)「ブロックに分割」の意味がよくわかりませんが、「ブロック」ごとに異なるファイル名サフィックスを使用するのはどうですか?

2)いいえ、各列の(増加する)順序を行う方法はnchoosek、行を並べ替えるだけです。上記の例のように、ランダムに 2 つの画像を表示したい場合は、 を使用できますrandsample(nFiles, 2)

于 2012-04-19T17:52:42.477 に答える