我使用Psychtoolbox创建了一个MATLAB代码进行实验。 一切都按我的预期工作,但似乎实验的初始加载时间太长。该任务是一个简单的是/否响应任务,无论目标单词(“ probe”)是否出现在前一组单词刺激中。
我将基本的介绍文字作为图像,然后等待任何按键开始实验,但是在任何按键之后实际上需要大约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