我试图在实验过程中得到一些刺激的排序,但是下面有一点问题。所以我有一个8个图像的列表,每个图像的数字为1-8。我需要在每个试验中显示2位数。所以每个数字需要显示9次,总共有72个演示文稿。但是,相同的两位数字不能出现在同一个试验中。另外,我不能经常出现相同的两位数字。
我尝试了几种不同的方法,但仍然让奇数加倍。
所以,例如。如果我这样做:
images = [ 1 2 3 4 5 6 7 8];
images = Shuffle(images);
images = repmat(images, 1, 9);
images = reshape(images, 36, 2);
images = shake(images, 2) %where shake is a function that shuffles the rows
它不会在同一行中给出相同的数字,但相同的数字总是一起出现,例如。你会得到3 6,然后是6 3
因为它不一定必须是36 x 2 matric的形式,它可能是72 x 1向量 - 我想一个选项可能是重复和洗牌行,将shuffle放在一个循环中限制任何加倍,
e.g。
not_good = true;
while not_good
not_good = false;
vector = shuffle(repeated_vector);
if (gets a bit hazy here, something to say if two consecutive values are equal)
not_good = true;
end
end
但老实说,我愿意接受建议,并且非常感谢任何帮助/澄清。
答案 0 :(得分:0)
像Amro所说:使用nchoosek
来获取所有图像对。
然后使用randperm
随机化订单。
nImages = 8;
pairs = nchoosek(1:nImages, 2);
nPairs = size(pairs, 1);
order = randperm(nPairs);
randomisedPairs = pairs(order, :)