【问题标题】:Manipulate presented timer in a psychopy experiment在精神病实验中操纵呈现的计时器
【发布时间】:2019-04-17 06:25:45
【问题描述】:

在实验中,参与者会在屏幕右上角看到经过的时间显示。我的目标是在不同的条件下操纵这个显示。 详细地说,在一种情况下,经过的计时器应该快 1.2 倍,在另一种情况下,只比实际时间快 0.8 倍。当然,计时器仍应仅显示不带小数的完整数字(1、2、3 等)。有什么简单的实现方法?

我尝试将计时器与常数相加或相乘,但这会导致很多小数。如果我要向上或向下舍入这些数字,计时器将不再精确,因为计时器的每次增加不一定等于例如1.2 秒。

【问题讨论】:

  • 更快地运行计时器(比如每 10 毫秒),但只显示完整的秒数。这样,您可以在不破坏显示的情况下将经过的时间速度加倍。
  • 我不明白你的问题。为什么您的延迟时间与显示的值有任何关系?只需设置一个每 N 秒(0.8、1、1.2 等)执行一次操作的计时器,其中“某事”是将显示编号增加 1。
  • @Steve 我假设他们从固定的 1 秒计时器开始,问题从那里到达。

标签: python psychopy


【解决方案1】:

创建两个 PsychoPy 文本刺激和一个 PsychoPy 计时器。在循环中,使用来自时钟对象的当前时间值更新文本刺激。这只是一个以秒为单位的时间,从 0 开始,因此您只需将其乘以一个常数即可获得所需的时间膨胀。例如

from psychopy import visual, event, core

win = visual.Window(units='height')
normal_text = visual.TextStim(win=win, pos=(0, 0.1))
faster_text = visual.TextStim(win=win, pos=(0, -0.1))

timer = core.Clock() # starts here at 0. Can be reset to 0 if needed.

# run until a key press:
while not event.getKeys():
    # update the time value:
    current_time = timer.getTime()

    normal_text.text = round(timer.getTime(), ndigits=1)
    faster_text.text = round(timer.getTime() * 1.2, ndigits=1)

    # display them on screen:
    normal_text.draw()
    faster_text.draw()
    win.flip()

您应该看到,当一个文本刺激显示 12.0 时,另一个仍然在 10.0

关于四舍五入的问题,请注意,您可以告诉四舍五入函数四舍五入到特定的小数位数,如上所述,但您也应该在四舍五入之前进行乘法运算,否则位数确实会增加再次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    相关资源
    最近更新 更多