MATLAB에서 Stroop과 같은 반응 시간 작업을 생성했으며 파일럿 결과를 보면 코드에 문제가있을 수 있음을 알 수 있습니다 (일치하는 효과는 예상보다 훨씬 큽니다). RT가 잘못 기록 된 것 같아서 다음 설정이 괜찮은지 누군가가 나를 도와 줄 수 있습니까?KbCheck 및 GetSecs를 사용하여 MATLAB (Psychtoolbox)의 충돌 작업에 반응 시간 기록
주어진 시련에 대해 두 개의 이벤트가 발생합니다 (고정 십자가에 따라) : 먼저 대상 자극이 최대 3 초 (또는 응답까지) 동안 표시되고 참가자는 다음 버튼을 눌러야 다음 이벤트가 시작됩니다 시도. 두 버튼 프레스 (대상 및 시연 시작 버튼)에 대한 RT가 기록됩니다. 여기 내 코드가 :
Screen('DrawTexture', mainwin, Target);
Screen('Flip', mainwin);
timeStart = GetSecs;keyIsDown=0; correct=0; rt=0;
while 1 & (GetSecs - timeStart) < 3
[keyIsDown, secs, keyCode] = KbCheck;
FlushEvents('keyDown');
if keyIsDown
nKeys = sum(keyCode);
if nKeys==1
if keyCode(Left)||keyCode(Right)||keyCode(Down)||keyCode(Up)
rt = 1000.*(GetSecs-timeStart);
keypressed=find(keyCode);
Screen('Flip', mainwin);
if ... [I removed some irrelevant ERROR feedback related code here]...
elseif keyCode(escKey)
ShowCursor; fclose(outfile); Screen('CloseAll'); return
end
keyIsDown=0; keyCode=0;
end
else
keypressed = 0; %the resp column in output is 0 if no button is pressed
end
end
if keypressed == 0 %indicates timeout errors
DrawFormattedText(mainwin, 'TOO SLOW', 'center', 'center', errorcol);
Screen('Flip', mainwin);
WaitSecs(1);
end
Screen('DrawTexture', mainwin, press5);
Screen('Flip', mainwin);
keyIsDown=0; timeSt = GetSecs;
while 1
[keyIsDown, secs, keyCode] = KbCheck;
if keyIsDown
if keyCode(MoveOn)
pause_rt = 1000.*(secs - timeSt);
break ;
elseif keyCode(escKey)
ShowCursor;
fclose(outfile);
Screen('CloseAll');
return;
end
end
end
내 질문 : GetSecs 명령은 호출 될 때마다 시간을 얻는다. 맞습니까? 따라서 GetSecs - timeStart는 RT를 계산할 수있는 괜찮은 방법입니다. 그러나 secs는 buttonpress에 대해 KbCheck가 반환하는 시간이므로 secs - timeSt (두 번째 자극에 대해 알 수 있습니다)입니다. 이 두 메서드는 대체로 비슷합니다 (GetSecs - timeStart가 RT를 약간 과대 평가하는 경우). 맞습니까?
NEXT 평가판의 대상에 대한 RT 예상치는 이전 평가판의 RT 버튼 두 번째 버튼의 영향을받을 수 있습니다. 그 증거가 보이니?
제안 해 주셔서 감사합니다. 문제는 RT 자체가 잘 보이기 때문에 조금 복잡하지만 다른 시험 유형 (상충되는 것과 상반되지 않는 것) 간의 RT 차이는 문학보다 훨씬 크다. 동일한 재판에서 서로 다른 이벤트에 대해 두 개의 별도 RT를 기록합니다. – MGy