Clear Filters
Clear Filters

Info

This question is closed. Reopen it to edit or answer.

[Help] with randomizing a Permutation

2 views (last 30 days)
Neurocognitive Psychology
Neurocognitive Psychology on 12 Mar 2020
Closed: MATLAB Answer Bot on 20 Aug 2021
I created an emotion recognition paradigm which shows 144 short video clips of emotional faces.
  • 1-36 angry faces
  • 37-72 fearful faces
  • 73-108 sad faces
  • 109-144 neutral faces
I could need help in randomizing those video clips with the restriction that the same emotion is not shown more than 3 times consecutively. In the end I want a randomized numerical sequence containing all numbers from 1 to 144. Each number only shown once.
I'm glad for any help!

Answers (1)

Sai Veeramachaneni
Sai Veeramachaneni on 17 Mar 2020
You can use below function to achieve behavior you need.
function sans = getIds()
emotions = zeros(1,144);
emotions=string(emotions);
for i=1:36
emotions(i)="angry";
end
for i=35:72
emotions(i)="fear";
end
for i=73:108
emotions(i)="sad";
end
for i=109:144
emotions(i)="neutral";
end
sans=1:144;%final answer is stored in this
sequence=1:144; %temporary sequence
pointer=144;
i=1;
while i<=144
tem = randi([1,pointer],1);
temp = sequence(tem);
if (i>3 && (emotions(sans(i-1))~=emotions(temp) ||...
emotions(sans(i-2))~=emotions(temp) ||...
emotions(sans(i-3))~=emotions(temp)))|| i<=3
sans(i)=temp;
i=i+1;
[sequence(tem),sequence(pointer)]=deal(sequence(pointer),sequence(tem));
pointer=pointer-1;
end
end
end

This question is closed.

Community Treasure Hunt

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

Start Hunting!