Я создал код MATLAB, используя Psychtoolbox, чтобы провести эксперимент.
Все работает как я задумал, но кажется, что первоначальная загрузка эксперимента занимает слишком много времени. Задача представляет собой простую задачу ответа «да / нет», появилось ли целевое слово («зонд») в предыдущем наборе слов стимулов.
Я помещаю основной вводный текст в виде изображения, а затем жду, пока любое нажатие клавиши не начнет эксперимент, но на самом деле потребуется около 40 секунд, чтобы начать первое испытание после любого нажатия клавиши. Я хочу, чтобы все работало без задержек. Он должен начать свое первое испытание сразу после любого нажатия клавиши.
Я проверил временные вершины с помощью GetSecs () на многочисленных позициях в коде, и это не имело никакого отношения к загрузке стимулов или начальной настройке эксперимента перед циклом for, который я прикрепил ниже.
Чтобы все выглядело проще, я изменил некоторые переменные на фактические числа, которые я использовал. Я могу гарантировать, что это не из-за большого размера стимулов, так как это всего 1500 слов. Как только цикл for запускается, он идет гладко, но на самом деле для начала первого испытания требуется 40 секунд, поэтому я думаю, что это связано с определенной функцией в цикле for или способом, которым я ее построил.
Пожалуйста, дайте мне знать, если что-то слишком расплывчато или неясно. Я сделаю все возможное, чтобы все стало лучше.
Редактировать: я минимизировал код, оставив только имена функций, используемые в Psychtoolbox. Я оставил функции между циклами, чтобы вы знали, могут ли они вызвать задержку. Это не будет возможно выполнить без установленного Psychtoolbox, поэтому я думаю, что вы можете кратко изучить структуру кода.
for trial = 1:250
for i = 1:6
DrawFormattedText();
Screen();
WaitSecs(0.5);
end
DrawFormattedText();
flipTime = Screen();
WaitSecs(0.5);
DrawFormattedText();
flipTime = Screen();
rt = 0;
resp = 0;
while GetSecs - flipTime < 3
clear keyCode;
RestrictKeysForKbCheck();
[keyIsDown,secs,keyCode] = KbCheck;
respTime = GetSecs;
pressedKeys = find(keyCode);
% ESC key quits the experiment
if keyCode(KbName('ESCAPE')) == 1
clear all
close all
sca
return
end
% Check for response keys
if ~isempty(pressedKeys)
for i = 1:2
if KbName(i) == pressedKeys(1)
resp = i;
rt = respTime - flipTime;
end
end
end
% Exit loop once a response is recorded
if rt > 0
break;
end
end
if rt == 0 || rt > 3 % 3 second limit for subjects to react to the probe stimuli
DrawFormattedText();
Screen();
WaitSecs(1);
end
Screen();
vbl = Screen();
WaitSecs(1);
% Record the trial data into output data matrix
respMat{1, trial} = trial;
respMat{2, trial} = resp;
respMat{3, trial} = rt;
end