0
我试图在实验过程中得到一些刺激的排序,但对以下内容有轻微的问题。所以我有一个8位图像的清单,每个数字都是1 - 8。我需要在每个试验中显示2位数字。所以每个数字都需要显示9次,总共有72次演示。但是,相同的试验中不能出现相同的两位数字。另外,我不能经常出现两个相同的数字。当在Matlab中重复和随机化一个矩阵时约束洗牌
我尝试了几种不同的方法,但不断得到奇数双。
例如,如果我这样做:
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基准的形式,它可能是72 x 1矢量 - 我想一个选项可能是重复和洗牌该行,将洗牌放入一个循环内以约束任何双重上升,
例如
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
但老实说,我很乐意提供建议,任何帮助/澄清将不胜感激。
我还不是很清楚:你想反复从8张图片中选择2位数字(没有替换)..是否还有其他要求?也许你正在寻找[NCHOOSEK](http://www.mathworks.com/help/techdoc/ref/nchoosek.html)函数:'nchoosek(1:8,2)'给出了8位数字的所有组合2一次。 – Amro
@Lau:如果答案对您有用,那么您可以通过点击乐谱旁边的向上箭头来使其成功。 –