J'essaie de créer une expérience RT simple dans MATLAB R2014b, en utilisant Psychtoolbox. Les participants devront catégoriser les visages en appuyant sur l'un des deux boutons le plus rapidement possible. J'ai créé le paradigme sur un ordinateur, et ça marche bien, mais quand je l'ai déplacé vers un autre (celui sur lequel je veux tester), il y a eu une erreur bizarre: même si le programme semblait enregistrer des pressions sur la plupart des procès, parfois il ne répondrait pas, et j'ai dû appuyer sur la touche un certain nombre de fois avant de passer au procès suivant. Je ne suis pas sûr ce qui se passe, mais je suppose qu'il pourrait y avoir quelque chose de mal avec l'ordinateur lui-même (ce pourrait-il être?), Ou avec ce bit particulier du code:KbCheck (?) Peu fiable dans le paradigme Psychtoolbox RT
Screen('Flip', mainwin);
timeStart = GetSecs;keyIsDown=0; correct=0; rt=0;
while 1
bf = 0; %this variable is irrelevant here, I use it later to break
out of a loop
while (GetSecs - timeStart) < 0.2 %faces are presented briefly, but
%I'm recording responses here anyway, just in case there are some
%fast anticipatory responses - after this loop is over, I keep
%recording RT and button press the exact same way, but with no
%stimulus present
[keyIsDown, secs, keyCode] = KbCheck;
FlushEvents('keyDown');
if keyIsDown
nKeys = sum(keyCode);
if nKeys==1
if keyCode(Key1)||keyCode(Key2)
rt = 1000.*(GetSecs-timeStart);
keypressed=find(keyCode);
Screen('Flip', mainwin);
type = 'T';
bf = 1;
if keyCode(Key1) & targ_pic == 1
correct = 1;
elseif keyCode(Key2) & targ_pic == 0
correct = 1;
end
break;
elseif keyCode(escKey)
ShowCursor; fclose(outfile); Screen('CloseAll');
return
end
keyIsDown=0; keyCode=0;
end
else
keypressed = 0;
end
end
Quelqu'un peut-il place peut-être quelque chose qui peut avoir tort avec ça? Incidemment: est-ce la bonne façon d'obtenir RT à partir de PTB? J'ai trouvé ce morceau de code en ligne, mais je ne sais pas très bien pourquoi la variable "secs" n'est pas utilisée.
Les deux ordinateurs équipés de Windows 10.
Merci, ce sont des commentaires très utiles. Pensez-vous que l'un de ces problèmes pourrait être à l'origine de l'échec de KbCheck à enregistrer des pressions sur certains essais? (Malheureusement, je suis incapable de vérifier maintenant si ce problème est résolu de cette façon sur cet ordinateur.) En outre, je voulais le rendre plus concis et avoir une seule boucle de vérification avec le stimulus disparaissant après 200 ms, mais ne pouvait pas comprendre un moyen. Le faire de cette façon, avec deux boucles consécutives est faux (c'est-à-dire, pourrait revenir en grande partie - +/- plus de 20 ms - estimations RT incorrectes), ou tout simplement pas élégant? – MGy
Je pense que les changements peuvent corriger le problème de ne pas enregistrer de KbCheck, mais je ne suis pas sûr à 100%. En utilisant une boucle RT contre deux, deux boucles ne sont pas fausses, et ne devraient pas ajouter d'erreur aux temps de réponse, mais c'est plus compliqué parce que vous incluez le code de vérification RT deux fois. Pour utiliser une boucle, il suffit de continuer à vérifier RT jusqu'à ce que la période de réponse se soit écoulée (au lieu de vérifier jusqu'à ce que 200 ms se soient écoulés). Ensuite, dans cette boucle principale, vérifiez également si 200 ms se sont écoulés et si le stimulus est toujours à l'écran. Si c'est le cas, désactivez le stimulus. – DMR