2016-12-24 7 views
0
while 1 

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

вот мой пример кода, я работаю над задачей Stroop, я ожидаю времени реакции gatjer. Время реакции начинается с представления стимула и заканчивается нажатием клавиши. Я использую код выше, чтобы подавить целую клавиатуру, ожидая цифры 1-2-3-4. Однако иногда все клавиши могут быть нажаты, а не только 1-2-3-4. Я много раз пробовал, он несколько раз подавляет ключи, иногда это не так. Я действительно не понимаю причину.с использованием getchar в PTB в MATLAB

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^