Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

[Help] with randomizing a Permutation

1 Ansicht (letzte 30 Tage)
Neurocognitive Psychology
Neurocognitive Psychology am 12 Mär. 2020
Geschlossen: MATLAB Answer Bot am 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!

Antworten (1)

Sai Veeramachaneni
Sai Veeramachaneni am 17 Mär. 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

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by