0
    while 1

    ch = GetChar
    KbWait
    if (ch>48) && (ch<53) 
         trial(j).RT =  GetSecs - startTime ;
       break;
    end
    end

这是我的示例代码,我正在处理一个 Stroop 任务,我希望能够缩短反应时间。反应时间从刺激呈现开始,到按键结束。我使用上面的代码来抑制整个键盘,期望数字为 1-2-3-4。但是,有时可以按下所有键,而不仅仅是 1-2-3-4。我已经尝试了很多次,它有时会抑制键,有时不会。我真的不明白其中的原因。

4

1 回答 1

0

GetChar() 函数等待按键,或从队列中检索先前按下的键:http: //docs.psychtoolbox.org/GetChar。可能发生的情况是队列中有先前的按键被 GetChar 读取,即使它们不是最近的按键。

但是,Psychtoolbox 开发人员建议不要使用 GetChar() 函数来收集响应时间。这是由于 GetChar() 相对于 KbCheck() 等其他函数的时间预置。

以下代码段可用于轮询键盘以获取响应时间:

% find the keyscan codes for the first four number keys
% (top of the keyboard keys, number pad keys have different codes)
keysToWaitFor = [KbName('!1'), KbName('2@'), KbName('3#'), KbName('4$')];

responded = 0;
while responded == 0

    [tmp,KeyTime,KeyCode] = KbCheck(-3);

    if KeyCode(keysToWaitFor)
        trial(j).RT =  KeyTime - startTime;
        responded = 1;
    end

    % time between iterations of KbCheck loop
    WaitSecs(0.001);
end
于 2017-01-03T05:21:52.043 回答