在MATLAB中使用repmat()

时间:2015-03-05 17:47:02

标签: matlab matrix

我需要为包含10个实验块的实验生成刺激的试验顺序:

  • 每个区块应该有100个试验。
  • 有20张图片作为刺激。
  • 在每个区块内,20个刺激应该 每次显示5次。
  • 刺激的顺序应该是完全随机的。 (意思是,随机顺序不是1:20,然后是随机顺序的1:20,依此类推。 所有100个试验应该在每个区块随机化!)

我必须制作一个矩阵来表示我的实验的试验顺序,其中行代表10个块,而列表示对  从第1列到第100列依次显示。

我发现我应该使用函数repmat(),但我无法解决这个问题。

1 个答案:

答案 0 :(得分:1)

这样做,只需根据需要调整块数和块大小的值。但是没有使用repmat

Nblocks = 10;
Nchoices = 20;
Ndisp = 5; 

Ntrials = Ndisp*Nchoices;

array = ceil([Nchoices/Ntrials:Nchoices/Ntrials:Nchoices]);
perms = array(cell2mat(cellfun('randperm',mat2cell(Ntrials*ones(Nblocks,1),ones(Nblocks,1),1),'UniformOutput',0)));

如果想要更深入地理解它,将较长的包装命令分成单个步骤是个好主意。请特别注意各个功能的文档,特别是ceilrandperm