randomization of a vector by blocks
2 views (last 30 days)
Show older comments
Alejandro Estudillo
on 25 Jun 2018
Commented: Alejandro Estudillo
on 26 Jun 2018
I am programming an experiment. Let's say that my experiment has 13 different conditions. Each condition is presented twice per block. There are two blocks in total. This makes a total of 52 trials.
conditions = repmat(1:13,1,4)
I can randomize the variable condition.
conditionsrand = conditions(randperm(length(conditions)))
However, I would like to do this randomization by block. That is every 26 trials there should be two instances of each condition. I think that this must be something easy, but I cannot find the solution.
Any idea?
Thanks!
0 Comments
Accepted Answer
Jos (10584)
on 25 Jun 2018
Edited: Jos (10584)
on 25 Jun 2018
C = repmat(1:13,1,2) % conditions per block
% [block1 block2]
rC = [C(randperm(numel(C))) C(randperm(numel(C)))] % *corrected
3 Comments
Jos (10584)
on 25 Jun 2018
I forgot two closing brackets, which is now corrected. Do you want to create all trials at once? An easy alternative:
C = 1:5
numC = numel(C)
numCperBlock = 2
numBlocks = 3
[~,r] = sort(rand(numC, numCperBlock * numBlocks))
rC = reshape(C(r),1,[])
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!