关于个人科研中使用Psychtoolbox制作刺激界面的原理解释及代码说明

闪烁刺激原理

Psychtoolbox通过双缓存技术,在windows后台创建多个Flip缓存区域,将需要表现的闪烁刺激以纹理的形式在后台缓存区。然后通过VBL垂直回扫信号捕捉到显示屏刷新的时间,在刺激开始时将刺激纹理按每帧(通过Screen(‘Flip’,win,ifi)函数)一个编写好的缓存纹理的顺序呈现,以达到刺激界面的时间戳上的精确呈现效果。

matlab相关代码说明

在这里插入图片描述
通过0-1编码技术,实现显示器屏幕刷新速度/(0-1编码个数)=刺激频率的目的。将0/1分别表示不同的“颜色”,例如显示器刷新频率为60Hz,当需要产生10Hz的刷新频率时,设置编码为[0 0 0 1 1 1],完成一个[0 0 0 1 1 1]编码所需的时间是6帧,而在这六帧中不同颜色分别显示一次(一次时常为三帧)在屏幕上表现为完整一次刺激,而在一秒钟内,该刺激共产生10次,故其表现出10Hz的刺激频率。其他频率产生依此类推。在编码个数为奇数时,0-1的个数谁多谁少没有关系。以6.667频率为例,在1.5秒90帧数的情况下,无论是0000,还是11111都是各自只出现九次,并不会影响到刺激的最后频率呈现。
在这里插入图片描述
绘制的纹理区域个数为2^刺激块个数,具体理解如下:刺激块只存在两种表现形式,即显示与不显示。共五个刺激块的时候,按照排列组合的形式,所有可能的刺激块显示或者不显示的情况共有22222种情况,由于0-1编码的0在前排列方式,以及编码总长LcmFreq为所有刺激块0-1个数的最小公倍数。所以第一种以及最后一种组合方式表现为都不显示和都显示。其他则按编码顺序依次呈现。
在这里插入图片描述
获得显示器刷新速度
在这里插入图片描述
首先获得0-1矩阵中在某一帧(indexflip值)每一个刺激快表现(0/1)形式,然后点乘矩阵[1;2;4;8;16],同前理可得,同样此处也共有32种结果。然后将其取值调出,累加在一起,确定最终所匹配的textureValue值,用于调用相应的texture(i)纹理。
[1;2;4;8;16]的排列理由:根据flickTexture函数中的循环顺序设置,具体可以查看screenMatrix数组,例如第五个纹理出现的区域只在17-32这16个logical矩阵中,保证了在screenMatrix出现的概率为0.5,只有出现和不出现两种情况。
注意:这是每一帧显示一个纹理。验证方法:对Flip函数计时(是否等于0.016666),每一次调用Flip函数表示显示一个后台缓冲区域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值