Перестановка массива ячеек - PullRequest
0 голосов
/ 27 мая 2018

Я программирую задачу для исследовательского исследования.У меня проблема в следующем: у меня есть словарь с именами и с одним изображением на ячейку.Например:

nameCues1 = {'Lisa','Anna', 'Sarah', 'Nina', 'resized_1.jpg' };
nameCues2 = {'Emma', 'Lena', 'Gabi', 'Steffi', 'resized_2.jpg' };

Я загрузил их в массив ячеек, создал случайную последовательность:

nameCuesAll = {nameCues1,nameCues2};

randSeq3 = nameCuesAll(randperm(size(nameCuesAll,2)));

Затем я перебираю их, чтобы прочитать названия словаря исоответствующая картинка:

for i = 1:numel(nameCuesAll)
    pics3{i} = imread(randSeq3{i}{1,5});
    ind{i}=randSeq3{i}(randperm(numel(randSeq3{i})));
end

Затем я показываю это на экране через Psychtoolbox, набор инструментов, специализирующийся на создании задач для исследований, для тех, кто не знает:

for j = 1:4
    % (left out unnecessary other functions)
    DrawFormattedText(window,ind{i}(j), 'center', 'center', white, [], [], [], [], [], rect);
end

Проблемав том, что имена словаря не отображаются в случайном порядке, и каждая попытка, которую я имел до сих пор, приводила к ошибкам.Основная проблема в том, что я не знаю, как правильно рандомизировать / индексировать имена словаря.

Спасибо за любые идеи!

1 Ответ

0 голосов
/ 27 мая 2018

Чтобы изменить порядок элементов массива ячеек, вы должны ссылаться на элементы, используя ():

nameCues1 = {'Lisa','Anna', 'Sarah', 'Nina', 'resized_1.jpg' };
rIdx = randperm(numel(nameCues1));
mixedCues = nameCues1(rIdx)

, что дает для случая rIdx = [3 5 1 4 2]:

mixedCues =

  1×5 cell array

    {'Sarah'}    {'resized_1.jpg'}    {'Lisa'}    {'Nina'}    {'Anna'}

Тогдаиспользуйте mixedCues вместо nameCues1.

См. также: Доступ к данным в массиве ячеек .

...