Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

[Help] with randomizing a Permutation

1 vue (au cours des 30 derniers jours)
Neurocognitive Psychology
Neurocognitive Psychology le 12 Mar 2020
Clôturé : MATLAB Answer Bot le 20 Août 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!

Réponses (1)

Sai Veeramachaneni
Sai Veeramachaneni le 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

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by