Psychtoolbox一些基本操作

%===========================================================================
try
    Screens=Screen('Screens'); 
    ScreenNum=max(Screens);   
    [w, wRect]=Screen('OpenWindow', ScreenNum); 
    % 打开一个新的屏幕
    % w指代当前的屏幕
    % wRect,当前屏幕的大小矩阵,我的电脑分辨率是1280×800, wRect就是[ 0 0 1280 800]

    black=BlackIndex(w);
    white=WhiteIndex(w);
    gray=(white+black)/2;
    %当前屏幕的最大、最小灰度值,一般white=255, black=0; 两者均值设为gray
    
    Screen('FillRect',w,gray); %把屏幕w涂成gray颜色
    Screen('Flip',w); %需要flip上面对屏幕的操作才会显现出来
    
    HideCursor; %隐藏鼠标的光标,以免实验过程中受到打扰
 
    Text='Press any key to start...'; %需要呈现的文字
    oldTextSize=Screen('TextSize',w,35); %调整文字的大小为35号
    Screen('DrawText', w, Text, 420, 340,[0,0,255]); %呈现文字在屏幕上的函数
    Screen('Flip',w); %同上面。需要flip对屏幕的操作才会显现出来
    KbWait;
    %按任意键继续
        
    Waitsecs(2); %屏幕两秒

    Screen('CloseAll');  %结束,关闭屏幕
    ShowCursor   %显示光标(前面把光标隐藏了),否则程序结束后屏幕上也没有光标

catch
    ShowCursor
    Screen('CloseAll');
    Priority(0);
    psychrethrow(psychlasterror);
end
%=========================================================================

首先,运行以上函数:
按F5运行程序。会看到新开出一个屏幕,随后出现如下文字和注视点,按任意键,之后屏幕逐渐
由黑变白,直到屏幕关闭。
try----catch----end结构:
推荐编程序都用这样的框架,catch后面都不用改、可以直接用。
这个结构的好处是,当try下面的语句出现问题的时候,会自动执行catch后面的语句,
跳出程序,不会出现程序卡死等问题。

打开一个新的屏幕:
语句就是下面三行:
Screens=Screen(‘Screens’);
ScreenNum=max(Screens);
[w, wRect]=Screen(‘OpenWindow’, ScreenNum);
其实可以直接记下来,每次程序开始的时候,要开屏幕就直接这么用。
[w, wRect]记录了两个后面会用到的变量,w指代当前新开的屏幕,比如要在这个屏幕上呈现文字,
就要用w指代“这个屏幕”;wRect是当前屏幕的大小,我的电脑分辨率是1280×800, wRect就是[ 0 0 1280 800]

打开的屏幕就是一个画布:
打开新的屏幕,就像是新开了一个画布,在上面随便涂涂画画:文字、线段、面孔图片等刺激材料,
控制好呈现时间,实验程序就ok了。

在画布上写文字(DrawText函数):

 %=======================
   Text='Press any key to start...'  %需要呈现的文字
   oldTextSize=Screen('TextSize',w,35); %调整文字的大小为35号
   Screen('DrawText', w, Text, 420, 340,[0,0,255]); %呈现文字在屏幕上的函数  
 %========================  

DrawText函数用于在屏幕上写字,"w"是上面用于指代屏幕的变量,"Text"是你需要呈现的文字的变量,需要提前设定,比如我写的是:Text=‘Press any key to start…’;420,340两个数字是文字呈现位置的坐标,matlab的设定为屏幕左上角为原点(0,0),横坐标向右为正、纵坐标向下为正;[0,0,255]是文字的颜色,RGB。
第二行TextSize用于设置文字的大小。其他的还可以设置字体之类的,先不管了。。。

画布上画好后,需要Flip才会呈现到屏幕上:

%================
  Screen('Flip',w);   % 要flip,操作才会显现出来
%================

无论在这张画布上画了什么,都需要刷新一下,写一个上面的函数,这些画上去的东西才会出现在屏幕上。
所以,你就可以悠闲地画上很多东西,写文字、画线段、画圆、放一张面孔图片等…然后用一个Flip函数
这些所有的都会同时呈现出来。
最后,千万记得关闭屏幕!!

%================
    Screen('CloseAll');  %结束,关闭屏幕
%================

PS:
利用帮助文档:比如你看程序中的WaitSecs函数,不太懂。所以在命令窗口输入“help WaitSecs”
就会出现具体的用法。输入“doc WaiSecs”也可以。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值