0
    while 1

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

ここに私のサンプル コードがあります。私はストループ タスクに取り組んでいます。反応時間が長くなることを期待しています。反応時間は、刺激提示で始まり、キーを押すことで終わります。上記のコードを使用して、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 に答える