Psychtoolbox-3 / PTB-3 for Matlab 入门

[windowPtr,rect]=Screen('OpenWindow',windowPtrOrScreenNumber,[color],[rect],[pixelSize],[numberOfBuffers],[stereomode],[multisample],[imagingmode],[specialFlags],[clientRect]);

Screen函数为PTB工具箱中最重要的函数,现以此解释相关参数:

  • windowPtr返回窗口句柄:窗口句柄是创建窗口时返回的窗口指针。
  • Screen('函数字符串',参数列表):“函数字符串”是文本型的函数名称,eg:’OpenWindow’,’Flip’,’CloseAll’等,必须至于单引号内。
  • 必须设置的参数为windowPtrOrScreenNumber,可以不用设置的参数有colorrect等,因为默认颜色为白色,默认窗口页面的大小为整个屏幕(与显示器分辨率有关)。等号前面[windowPtr,rect]的内容为指向页面的指针和创建页面的大小尺寸,也是可选的,即可接受页面指针和页面尺寸,也可只接收页面指针。
  • windowPtrOrScreenNumber:窗口句柄或屏幕序号(支持多个显示器),序号0为覆盖两个显示器屏幕的页面(两个显示器分辨率须一致,两个显示器组合起来共同显示同一个画面);序号1指第一个显示器,序号2指第二个显示器。
  • [color]颜色:通用形式为[R,G,B],默认值为白色。
  • [rect]矩形结构:[left top right bottom],分别表示矩形的左上角和右下角坐标,对一个窗口而言,其左上角坐标始终(0,0),因此右下角坐标就相当于窗口的宽度和高度。至少包含一个像素。
  • PixelSize:像素的深度,以位数来表示的存储一个像素所需的位数,默认值为当前显示器的设置,该值越高,表示某个像素的颜色值越丰富;可取值为8、16、32。
  • NumberOfBuffers:缓冲区数,一般取值为2,可以将需要呈现的刺激,先写入缓冲区中,适当的时候再通过页面切换技术Flip将缓冲区中的内容一次性快速呈现在屏幕上。
  • Stereomode:是否立体模式,默认值为0.
  • Multisample:如果设置该参数为大于0的值,则表示系统会进行反锯齿优化,即呈现的刺激更平滑,但需要耗费较多的内存资源,同时可能会降低刷新频率。
  • Imagingmode:图像处理模式,该参数用于控制是否使用PTB借助OpenGL等插件所实现的图像处理功能。
  • SpecialFlags:特殊标识。
  • ClientRect:用于制定绘制区域的大小,当使用该参数时,会建立相应的虚拟的帧缓冲,显示将该缓冲中的内容进行缩放处理,假设创建的窗口尺寸为300×200,如果设置clientRect为[0 0 150 100],会使绘制的内容在水平和垂直方向上放大两倍;如果设置ClientRect为[0 0 600 200],会使绘制的内容在水平方向压缩为一半,垂直方向保持不变。
  • 时间单位:PTB-3中的时间单位为秒,如果要获得毫秒,则×1000。
  • [optional arguments]: Brackets in the function list, e.g. [color],
    indicate optional arguments, not matrices. Optional arguments must be in order, without omitting earlier ones, but you can use the empty matrix [] as a place holder, with the same effect as omitting it.如果想省略某个参数值,可以使用[]占位符来表示使用相应位置参数的默认值。

示例:
新建一黑色视窗,并在2号监视器上全屏显示。显示图片o_1000005.bmp,暂停2s后,显示图片o_1000006.bmp,暂停2s后,关闭视窗。

[winPt,winRect]=Screen('OpenWindow',2,[0 0 0]);  %新建一个视窗,并在2号监视器(显示器)上全屏显示,背景为黑色
I1=imread('o_1000005.bmp');
I2=imread('o_1000006.bmp');
b1=Screen('MakeTexture',winPt,I1);  %将图片I1读取到b1中备用
b2=Screen('MakeTexture',winPt,I2);

Screen('DrawTexture',winPt,b1);  %将b1读取到刚刚新建的视窗中(还未显示)
Screen('Flip',winPt);  %切换为b1图片
WaitSecs(2);  %暂停2s
Screen('DrawTexture',winPt,b2);
Screen('Flip',winPt);
WaitSecs(2);
Screen('CloseAll');  %关闭所有视窗

参考:
Psychtoolbox 3 精确时间控制(1)

Wiki: Textures, Windows, Screens

Psychtoolbox-3 FAQ
Psychtoolbox-3 Cookbook

    原文作者:DexterLei
    原文地址: https://www.jianshu.com/p/182599791363
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞