【问题标题】:Stop program, wait for a specific keyboard input and then continue program in Psychtoolbox MATLAB?停止程序,等待特定的键盘输入,然后在 Psychtoolbox MATLAB 中继续程序?
【发布时间】:2014-07-01 19:21:14
【问题描述】:

我很难弄清楚 KbCheck 功能是如何工作的,以及如何使用它来暂停我的程序正在执行的操作,等待按下空格键,然后继续执行程序。

KbCheck 的文档有这个:

[keyIsDown, secs, keyCode, deltaSecs] = KbCheck([deviceNumber])

我知道 keyIsDown 会不断返回 0,直到用户按下任何键,之后它会返回 1。但是,我如何使用带有 while 循环的 KbCheck 来执行上述操作?

【问题讨论】:

  • 如果您只想等待键盘输入,为什么不直接使用 matlab 的 pause function "暂停,它本身会导致当前执行的函数停止并等待您按任意键,然后再继续。 "
  • 无法使用暂停功能,因为我希望程序等待特定输入,在本例中为空格。我相信在这种情况下使用 KbCheck 是必不可少的。

标签: matlab psychtoolbox


【解决方案1】:

KbCheck 在您调用它时只进行一次检查。我认为您想要的是KbWait,它将停止程序的执行,直到它得到按键:

[secs, keyCode, deltaSecs] = KbWait([deviceNumber][, forWhat=0][, untilTime=inf])

PsychToolbox 中有许多键盘检查功能,因此可能值得检查它们是否更适合您的特定需求,例如:

  • KbPressWait
  • KbStrokeWait
  • KbReleaseWait

【讨论】:

    【解决方案2】:

    如果您打算使用KbWait(),您应该清楚地知道您的反应时间会出现时间抖动。文档说最多 5 毫秒,这可能会或可能不会在分析过程中给您带来一些问题。

    文档是这样说的:

    CAUTION: KbWait periodically checks the keyboard. After each failed check
    (ie. no change in keyboard state) it will wait for 5 msecs before the
    next check. This is done to reduce the load on your system, and it is
    important to do so. However if you want to measure reaction times this is
    clearly not what you want, as it adds up to 5 msecs extra uncertainty to
    all measurements!
    

    看一下解释它的演示:

    edit KbDemo.m
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多