Ограничение шаффла при повторении и рандомизации матрицы в Matlab - PullRequest
0 голосов
/ 01 сентября 2011

Я пытаюсь получить порядок для некоторых стимулов во время эксперимента, но у меня возникла небольшая проблема со следующим.Итак, у меня есть список из 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, это может быть вектор 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  

Но, честно говоря, я открыт для предложений, и любая помощь / разъяснения будет принята с благодарностью.

1 Ответ

0 голосов
/ 01 сентября 2011

Как сказал Амро: используйте nchoosek, чтобы получить все пары изображений.

Затем рандомизируйте порядок с помощью randperm.

nImages = 8;
pairs = nchoosek(1:nImages, 2);
nPairs = size(pairs, 1);
order = randperm(nPairs);
randomisedPairs = pairs(order, :)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...