gpt4 book ai didi

python - 我在哪里可以找到 Psychopy 刺激的闪烁功能?我该如何使用它?

转载 作者:行者123 更新时间:2023-11-30 22:55:12 24 4
gpt4 key购买 nike

目前我正在为我大学的论文在 Psychopy 中构建一个刺激,这 4 个刺激需要使用显示器刷新率以 8.57 Hz、10 Hz、12Hz 和 15 Hz 闪烁,我的问题是,Psychopy 可以做到这一点吗?还有我在psychopy中使用什么函数来闪烁?到目前为止我所做的是创建需要闪烁的形状。闪烁效果必须取决于频率和相位

    from psychopy import visual, event, core,gui ,data,  logging #import c
from numpy import sin, pi

cyclepersecond=8.57142
#Penentuan pergeseran fasa efek grating
phase=0
phase1=0
phase2=0
phase3=0
phase4=0
#Penentuan Frekuensi temporal dari penampilan efek grating
#phaseincrement = (cyclepersecond*360)
#gratingtex=visual.GratingStim(win, res(1), res(2), [0 0 0 0])

win = visual.Window([1366,768], color='black', units='pix',fullscr=False,) #membuat Window
#pembuatan stimulus
kotak1=visual.Rect(win, width= 150,height =150,pos=(10,250),)
segitiga1=visual.Polygon(win, edges=3, radius=40,pos=(10,250))
#segitiga1.setColor([-1,1,-1], colorSpace='rgb')
kotak2=visual.Rect(win, width= 150, height=150,pos=(400,-200))
segitiga2=visual.Polygon(win, edges=3, ori=90,radius=40, pos=(400,-200))
kotak3=visual.Rect(win,width=150, height= 150, pos=(-400,-200))
segitiga3=visual.Polygon(win,edges=3,radius=40,ori=-90,pos=(-400,-200))
kotak4=visual.Rect(win,width= 150, height=150,pos=(0,-200))
lingkaran1=visual.Circle(win,radius=40, edges=32,pos=(0,-200))

trialClock=core.Clock()
t=0
while True:
t=trialClock.getTime()
kotak1.contrast=sin(t*pi*2)
kotak1.draw()
segitiga1.draw()
kotak2.draw()
segitiga2.draw()
kotak3.draw()
segitiga3.draw()
kotak4.draw()
lingkaran1.draw()
win.flip()
#core.wait(5.0)


for key in event.getKeys():
if key in ['escape','q']:
core.quit()

我从 matlab 中的 psychtoolbox 知道你可以使用翻转来实现闪烁效果,但我真的不知道如何在 Psychopy 中做到这一点

最佳答案

@A_S00 发布了一个很好的概念性答案。非常具体地说,假设您使用 60 Hz 显示器:

  1. 8.57 Hz 对应于 60/8.57 = 7 帧开启和 7 帧关闭。
  2. 10 赫兹 --> 6 帧
  3. 12 赫兹 --> 5 帧
  4. 15 Hz --> 4 帧

...这里假设频率是 SHIFTS 的频率(每秒 8.57 次移位)而不是 CYCLES(每秒 8.57 次开关),因为后者在 60 Hz 显示器上是不可能的,因为您应该更改第 3 帧和第 4 帧之间的图像。

例如12 Hz 你会这样做:

flicker_frequency = 12
current_frame = 0
while True:
# When to draw stimuli
if current_frame % (2*flicker_frequency) < flicker_frequency:
kotak1.contrast = sin(t*pi*2)
kotak1.draw()
segitiga1.draw()
kotak2.draw()
segitiga2.draw()
kotak3.draw()
segitiga3.draw()
kotak4.draw()
lingkaran1.draw()

# Show whatever has been drawn. Sometimes the stimuli, other times a blank screen. flip() waits for the next monitor update so the loop is time-locked to the screen here.
win.flip()
current_frame += 1 # increment by 1.

关于python - 我在哪里可以找到 Psychopy 刺激的闪烁功能?我该如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37469796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com