randomization of a vector by blocks

2 visualizaciones (últimos 30 días)
Alejandro Estudillo
Alejandro Estudillo el 25 de Jun. de 2018
Comentada: Alejandro Estudillo el 26 de Jun. de 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!

Respuesta aceptada

Jos (10584)
Jos (10584) el 25 de Jun. de 2018
Editada: Jos (10584) el 25 de Jun. de 2018
C = repmat(1:13,1,2) % conditions per block
% [block1 block2]
rC = [C(randperm(numel(C))) C(randperm(numel(C)))] % *corrected
  3 comentarios
Jos (10584)
Jos (10584) el 25 de Jun. de 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,[])
Alejandro Estudillo
Alejandro Estudillo el 26 de Jun. de 2018
thanks! that works perfectly!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by