2016-12-24 30 views
0
while 1 

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

ここで私のサンプルコードですが、私はStroop Taskに取り組んでいます。私は反応時間を測定することを期待しています。反応時間は、刺激提示から始まり、キープレスで終了する。上記のコードを使用してキーボード全体を押さえると、1-2-3-4の数が予想されます。 ただし、1-2-3-4ではなくすべてのキーを押すことがあります。私は何度も何度も試してみましたが、時にはそうではありません。私は本当に理由を理解していない。MATLABのPTBでgetcharを使用する

答えて

1

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('[email protected]'), 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