e-prime时间问题

上传人:第*** 文档编号:31329373 上传时间:2018-02-06 格式:DOC 页数:14 大小:540KB
返回 下载 相关 举报
e-prime时间问题_第1页
第1页 / 共14页
e-prime时间问题_第2页
第2页 / 共14页
e-prime时间问题_第3页
第3页 / 共14页
e-prime时间问题_第4页
第4页 / 共14页
e-prime时间问题_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《e-prime时间问题》由会员分享,可在线阅读,更多相关《e-prime时间问题(14页珍藏版)》请在金锄头文库上搜索。

1、e-prime 的时间问题 Posted by 艾草 on 2009 年 9 月 9 日 星期三 Labels: e-prime、时间精确度 1 comments 认知心理学的行为实验中,反应时是一个非常有用的变量,同时也是一个比较难以精确记录的变量。实验刺激的呈现时间、按键反应记录都要求精确要毫秒(ms)。 E-prime 作为一个常用的心理学实验程序,它是怎么解决时间精确度问题的呢?或者说 e-prime 记录时间的原理是什么?又是怎么实现的呢?我们首先看看影响时间精确度的因素有哪些,然后看 e-prime 是怎样解决这些问题的。一、屏幕刷新率问题对于时间的精确度问题,首先要了解电脑屏幕的

2、显示原理。目前显示屏主要有CRT 和 LCD 两种。前者就是阴极射线管显示器。后者是液晶显示器。无论是CRT 还是 LCD 都有一个很关键的参数:屏幕刷新率(the refresh rate,一般是60 Hz)和屏幕刷新周期(the refresh duration,一般是多少 ms)。这两者之间的关系可以用公式计算:屏幕刷新率(Hz)=1000/屏幕刷新周期(ms)屏幕刷新周期(ms)=1000/ 屏幕刷新率(Hz)目前,电脑的屏幕刷新率一般都是 60ms。在屏幕上右击属性设置高级 监视器,你可以看到屏幕刷新频率 60 赫兹。但是,我们看到的是生产厂商报告的屏幕刷新率为 60 赫兹。而实际上

3、真正的屏幕刷新率不一定就是 60Hz。在 e-prime 中可以测电脑屏幕的实际刷新频率。在e-prime 收集的数据文件的 logs 中查看 Display.RefreshRate 的值就是电脑屏幕的实际刷新频率。下面是一些测试数据:那么时间精确度和屏幕刷新频率有什么关系呢?当然有啦!存在下面的公式:(The reported refresh rate)/(the actual refresh rate)=(actual time)/(expected time)举一个例子,如果一台电脑报告的屏幕刷新率为 60Hz,而实际为 75.3Hz。当这台电脑的屏幕刷新了 60 次,根据报告的刷新频率

4、(60Hz),电脑显示所用时间为 1000ms,而实际上只有 797ms。所以说影响时间精确度第一个问题就是电脑的屏幕刷新率不准确。e-prime 自动检测屏幕实际刷新率,在每一个 run 开始的时候,并把实际刷新频率记录到数据中,实验者可以进行检查。当然在编写实验程序的时候,需要把e-prime 中显示系统的屏幕分辨率和颜色质量设置为与电脑屏幕是一样的。具体操作可以参照 e-prime 使用指南。二、刺激呈现时间偏离设定值在用程序呈现刺激的时候,尽管我们设置一个刺激呈现时间为 800ms,但是偶尔却达到了 1000ms。这种偏离是偶然的,你不知道什么时候它会发生。这是为什么呢?我们首先要知道

5、,控制电脑的是我们的系统,而不是我们。电脑常常在运行着多个进程,当系统内存资源不足的时候,操作系统会优先让一些进程先运行,而让其他一些程序暂停,而且这种情况我们不知道什么时候会发生,这就产生了上面的随机偏离。下面的图很好的描述了这一点。最下面的白色线条,表示我们设定刺激呈现时间是 200ms,但是在第一个session 和第二个 session 中,都随机出现了峰值,这就是系统让 e-prime 暂停运行,从而导致了某一次刺激呈现时间的延长。另外一个问题可能大家也注意到了,除了那些偶然的峰值以外,实际的呈现时间总是在 300ms 左右,而不是设定的 200ms,这又是为什么呢?原因在于,程序调

6、用图片是需要时间准备的。在这个例子中,程序调用图片需要的准备时间为 100ms 左右。所以这里有两个问题,第一就是系统的偶然“堵塞” ,会导致程序的暂停,从而使呈现时间出现偏离。第二就是程序调用图片或者刺激是需要准备时间的。如果连续中间没有间隔地呈现图片,每张图片呈现 200ms,我们会发现实际上中间会有 100ms 的准备时间,也就是说一张图片的呈现需要用 300ms。e-prime 怎么解决这个问题的呢?首先 e-prime 中可以通过在程序的最开始添加 inline 语句实现。即告诉系统,e-prime 是优先执行的进行,不受任何其他程序的影响。在系统中,优先等级有三个:0,1,3。0

7、是最高等级,3 是一般等级。如果我们希望 e-prime 的优先等级为 0,则在 inline 中添加如下语句:SetOSThreadPriority 0但是一般而言,我们都不会把 e-prime 的优先级设置为 0。而是在实验的时候关掉其他程序。第二问题 e-prime 通过 PreRelease Timing Diagram 来解决。下图很好的说明了这个方法。就是在呈现当前刺激的时候,e-prime 在后台开始准备下一个刺激的呈现。在下图中,准备刺激所要 30ms,所以如果 PrePelease 值为 0,即不需要提前准备下一个刺激的呈现,那么刺激呈现之间就会有 30ms 的间隔。当Pre

8、Pelease 值设置为 30ms(大于 30ms 也可)时,即当前刺激还在呈现的时候,提前 30ms 在后台准备下一个刺激的呈现。在刺激属性窗口的 duration/input 项目中,有一个 PreRelease 值需要设置,默认为 0。在具体的实验中要根据刺激呈现的准备时间为准。一般而言 PreRelease值设置为 150-200ms 就可以满足大部分刺激呈现的要求。这个值的设定的时候有一个问题需要注意,就是当前刺激紧跟反馈的时候。由于反馈的呈现需要提取当前刺激的反应信息,如果让反馈显示提前准备,有可能被试还没有作出反应,无法提取被试的反应信息,从而做出被试没有反应的反馈。所以当下一个

9、呈现是反馈的时候,一般设置 PreRelease 为 0.三、刺激呈现时间与屏幕刷新周期的关系前面已经提到过,如果刷新频率不正确,会导致时间偏差。其实屏幕刷新周期与时间精确度也有关系。屏幕刷新周期(the refresh cycle),就是屏幕从这一次刷新到下一次刷新所需要的时间。首先要明白屏幕上显示的图像是有一个一个的像素组成的。分辨率为 1024*768 的屏幕,是说屏幕上有 1024*768 像素矩阵,1024 列,768 行(vertical display line )。屏幕显示是从左上角开始从左到右一个一个像素的显示,显示完一行,再从左到右开始显示下一行,一直到右下角。也就说,一个

10、在屏幕左上角的刺激比屏幕右下角的刺激更早显示出来(大约一个周期 14ms),只是我们的肉眼没有办法分辨而已。屏幕刷新之后(显示完后),需要完成一个 vertical blank event(这个我也不是很理解,原句在这里:the time that the electronic gun on the monitor moves from the bottom right of the display to the top left of the screen restart the refresh,我个人理解为可能类似于准备下一次显示需要完成的一个事件,这个事件类似于用一个电子枪从屏幕的右下角

11、开始进行扫描到左上角,与屏幕显示的方向相反。所需的时间 3ms 左右)。规定屏幕周期从 vertical blank event 开始,到屏幕从左上角到右下角的显示完成结束。如下图:刺激显示的时间是屏幕刷新周期的整数倍。举一个例子,假设屏幕刷新周期是13.67ms,设置刺激的呈现时间为 200ms,那么我们看到的刺激呈现时间可能有两个值:191.3ms (14*13.67ms) 或者 205.0ms (15*13.67ms)。在 e-prime 中,我们默认刺激显示要和下一次屏幕刷新周期同步。也就是说,与 ertical blank event 同步。如果目前不同步,e-prime 会等待下一

12、次 ertical blank event,然后开始呈现刺激。即如果目前屏幕才刷新一半,而我设置刺激立即显示。实际上刺激不会立即计时和显示,而是在下一次屏幕刷新开始计时并显示。这样就可能导致时间的偏离和累计偏离。e-prime 提供了多个时间模式解决这个问题:Event Mode Timing、Cumulative Mode Timing、Custom Mode Timing。Event Mode Timing,这个模式下,能保证单个刺激的呈现时间,但会有一定的时间漂移,并且最后累积下来,导致实验时间偏移。Cumulative Mode Timing 能,这个模式下,能保证整个 trial 的

13、时间没有偏移,但是单个刺激的呈现会出现调整。下面的图很好的展示了 Event Mode Timing 和 Cumulative Mode Timing 的区别。大家可以根据具体的实验要求去设置。在属性对话框的 duration/input 中进行设置。Custom Mode Timing,这个模式需要我们自己写代码了。如:Probe.CustomOnsetTime = Clock.Read + 5000Probe.CustomOffsetTime = Probe.CustomOnsetTime + 100具体怎么写要参看 e-prime 的 basic help,掌握基本的函数、命令、句法。四

14、、对所有数据进行记录和检查这一点主要是针对那些非常关注时间精确度的实验了。实验者可以记录每个刺激呈现开始的时间和结束的时间,然后进行分析。看中间有没有时间偏差,然后对数据进行校正,或者剔除。这主要决定于实验对时间精确度的需求。e-prime 操作实例 1 在开始编写实验程序之前,我们要想好自变量是什么,因变量是什么。下面举例。1. go/no go 任务e-prime 编程要从最小的一个 trial 开始。对于一个 trial,可能是 go trial 也可能是 no go trial。Go trial 中,被试看到 go 的 cue(自变量)的时候按 “/”键。所以要想好用什么刺激作为 go

15、 的 cue。需要记录被试的 反应、反应时、正确率(因变量) 。No go trial 中,被试看到 no go 的 cue 的时候不按键。所以要准备 no go 的 cue。在 no go trial 中记录被试的反应(按键与否)和正确率(因变量)。本实验采用一个 7.5cm*2.5cm 的长方形作为条件刺激。当长方形竖着为条件1,横着的时候为条件 2。条件 1 和条件 2 各占 50%.条件 1 的时候,图形变成蓝色是 no go trial,占 20%,图形变成绿色就是 go trial,占 80%。条件 2 的时候,图形变成蓝色是 no go tria,占 80%,图形变成绿色就是 g

16、o trial,占 20%.这样,一共有四种组合,随机呈现。一般而言,对于一个 trial,首先要在屏幕中心呈现一个注视点(fixation )。接下来就是呈现提示信息(cue/prime ,自变量),然后是 刺激(stimulus,自变量),反馈(feedback)。而我们需要记录的被试的按键反应(response)、反应时(reaction time)、正确率。所以需要告诉程序什么是正确反应(correct response),让计算机判断被试反应是否正确,从而计算整个实验的正确率。当然并不是每一个实验都有反馈(feedback)、都有提示信息(cue/prime),要根据自己的实验设计具体设置。有的实验设计中每一个 trial 都包括对 trial type的提示信息(自变量)。在这里 go/no-go 任务需要 反馈(feedback)、都有提示信息(cue/prime)、trial type 的提示信息。需要注意的是,注视点后直接呈现刺激有时候显得很突兀。所以在注视点到呈现刺激的中间,我们常

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号