2012-04-19 73 views
0

我有以下的MATLAB代码: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); 

它会随机在一个给定的目录中的图片文件,并将其显示在屏幕上。不过,我有两个问题:

1)的图片文件的数量是相当大的,我想它分解成为主体3或4个街区。我如何去做这件事?我无法将它们从不同的目录中拉出来,因为在所有块的过程中,我需要拥有所有可能的图片对。我无法弄清楚如何让MATLAB将其分解为块。

2)我每次运行该程序时,图片会以相同的顺序呈现的?为什么会发生?它应该是完全随机的,对吗?

回答

0

1)我真的不明白你所说的“分割成块”的意思,但关于使用不同的文件名后缀为每个“块”怎么样?

2)不,你这样做的(增加)为了让每列由nchoosek执行,那么你只需要置换行的方式。如果您想显示两张随机图片,如上例所示,您可以使用randsample(nFiles, 2)

+0

好了,说我有1000次试验。这是在一次会议太多了,所以我想它分割成250个试验4块,但所有块平衡,所以我仍然得到所有1000个原来的组合。我只是不知道如何去做这个在MATLAB中。 – 2012-04-20 15:26:50