微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据键盘响应显示刺激

如何解决如何根据键盘响应显示刺激

我正在Windows 10系统上的PsychtoolBox上使用MATLAB R2020a。我正在尝试根据用户提供的键盘响应在屏幕上显示刺激。我正在使用if-else语句对此进行编码,但是仅显示注视交叉,并且没有显示错误消息。出现问号时,用户按下箭头键,并在此基础上提出下一个刺激。

我也不知道如何区分开始任务的Kb响应和问号后的Kb响应。有人可以帮我吗?

% Question mark
Screen('FillRect',window,white);
Screen('DrawTextures',imageTexture,[],dstRects);
Screen('Flip',window)
KbstrokeWait;

% Experimental instructions
Screen('FillRect',grey);
Screen('DrawText',line3,screenXpixels*0.2,screenYpixels*0.4,white);
Screen('DrawText',line4,screenYpixels*0.5,white);
Screen('Flip',window);
KbstrokeWait;

% Fixation cross
Screen('DrawLines',allCoords,linewidthPix,white,[xCenter yCenter],2);
Screen('Flip',1);
WaitSecs(1);

% Draw rect frames

% Check the keyboard to see if a button has been pressed
    [keyIsDown,secs,keyCode] = KbCheck;
    
% Present stimulus   
if KbCheck == leftKey
    Screen('DrawText',num2str(seq1),rightX,rightY,[0 1 0]);
    Screen('DrawText',num2str(seq3),leftX,leftY,[1 0 1]);
    Screen('Flip',window);
    WaitSecs(0.5);
elseif KbCheck == rightKey
    Screen('DrawText',num2str(seq2),[1 1 0]);
    Screen('DrawText',window);
    WaitSecs(0.5);
elseif KbCheck == upKey
    Screen('DrawText',[1 1 0]);
    Screen('Flip',window);
    WaitSecs(0.5);
end

解决方法

在您的示例中,您正在调用ZonedDateTime.parse("2020-06-07T14:10:00+01:00").withZoneSameInstant(ZoneOffset.UTC); 函数并将结果与​​KbCheckleftKey等进行比较。但是,KbCheck的第一个输出只是一个布尔值,指示是否有任何键下来了。而是使用KbCheck函数中的keyCode矩阵,并比较是否按下了每个键。

在您的示例中,您也不是连续轮询键盘,而是显示固定1秒钟,然后在经过该秒钟后检查键盘一次。以下是校正键比较的示例,以及固定开始后1秒钟对键盘的检查。在这里,我已替换了绘制屏幕的调用,以将消息简单地打印到MATLAB控制台,以简化示例。

rightKey

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。