重新排列单元格阵列

时间:2018-05-27 19:12:15

标签: arrays string matlab cell permutation

我正在为一项研究编写任务。我遇到的问题如下:我有一个字典,每个单元格有一个图片。像那样:

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 :(得分:1)

要重新排序单元格数组的元素,您应该使用()

引用元素
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

另请参阅:Access Data in Cell Array