我正在Matlab中进行一个心理学实验,其中带有问题的屏幕将呈现给受试者。屏幕还将收集和显示受试者的回答。例如:屏幕显示"2+3",还显示参与者类型(例如 99999(,直到他们按 Enter 键。
目标:如果参与者尚未按回车键,则让它在 16 秒后停止显示问题。(也就是说,如果时间 = 16 秒或主体按 Enter 键,则停止显示屏幕。
问题围绕以下代码展开:
While CurrentTime<TimeOut
respond=GetChar() <-(Waits till user press enter)
end
因此,无论我们在捕获响应语句之前/之后添加什么语句,都不会执行。
有关如何解决此问题的任何帮助将不胜感激!谢谢。
这里有一个例子,我举了一个椭圆形作为例子,你显然可以用你的任何刺激来代替它。Enter 和 Return 是单独的键,我不确定您要查找哪个键,因此在示例中,循环会查找它们。
%% include at top of experiment / block
waitForResponseSeconds = 16; % number of second to wait for a response
enterKey = KbName('enter'); % numeric code for enter key
returnKeys = KbName('return'); % numeric code for return key(s)
responseKeys = [enterKey returnKeys];
wPtr = Screen('OpenWindow', 0, 0, [0 0 400 400]);
%% within the trial loop:
hasResponded = 0;
% present the stimulus (here the window pointer is called wPtr, you may
% need to adjust this depending on what you named the window pointer.
Screen('FillOval', wPtr, [100 0 100], [0 0 400 400]);
[~, Onset] = Screen('Flip', wPtr);
while ~hasResponded && ((GetSecs - Onset) <= waitForResponseSeconds)
[keyIsDown, secs, keyCode] = KbCheck;
if any(keyCode(responseKeys))
rt = 1000.*(secs-Onset); % get response time
hasResponded = 1;
end
% Wait 1 ms before checking again to prevent
% overload of the machine at elevated priority
WaitSecs(0.001);
end
%% end of exp
sca;