主要內容簡介:1.打開窗口;2.繪制圖像;3.記錄被試按鍵反應;4.記錄被試鼠標反應
% memory命令可以返回當前計算機的內存信息
% PTB初期可以調小窗口進行調試
% [wptr,~]=Screen('OpenWindow',0,0,[50 50 800 600]); 打開一個窗口。第一個參數是命令;第二個參數是把打開的窗口呈現在外接的屏幕上,0表示同一窗口呈現在兩個顯示器上,1表示在1號顯示器,2表示2號顯示器;第三個參數是窗口的背景色;第四個參數設置窗口的大小和位置。
% [x,y]=WindowCenter(wptr); 獲取打開窗口的中點
% pic=imread('701.jpg'); 獲取圖像的矩陣
pic2=Screen('MakeTexture',wptr,pic); 將圖像矩陣轉換為OpenGL紋理並返回其句柄
Screen('DrawTexture',wptr,pic2,[],[x-150,y-150,x+150,y+150]); 通過該句柄將紋理繪入指定窗口
Screen('Flip',wptr); 執行“”翻轉“”命令,將圖像顯示在顯示器上
WaitSecs(5); 等待5秒鍾,即圖像顯示5秒鍾
pic=imread('701.jpg'); pic2=Screen('MakeTexture',wptr,pic); Screen('DrawTexture',wptr,pic2,[],[x-150,y-150,x+150,y+150]); Screen('Flip',wptr); WaitSecs(5);
% 只要兩個圖像位置不重疊,是可以在一個畫板上顯示很多圖像的
pic=imread('702.jpg'); pic2=Screen('MakeTexture',wptr,pic); Screen('DrawTexture',wptr,pic2,[],[x-300,y-150,x,y+150]); pic=imread('703.jpg'); pic2=Screen('MakeTexture',wptr,pic); Screen('DrawTexture',wptr,pic2,[],[x,y-150,x+300,y+150]); Screen('Flip',wptr);
% [string,terminatorChar] = GetEchoString(wptr,'_',x+100,y+200,255,0); 這個函數是用來監聽被試的的輸入的字符的;‘-’是提示/抬頭;后兩個參數是抬頭的位置;最后兩個輸入的字的顏色和輸入框的背景色 按enter鍵輸入完畢並繼續。若需要記錄數字信息,如被試編號,則可以將String改為number,具體可以查詢相關函數
% 下面是當被試做出指定的按鍵反應的時候,實驗程序才會繼續的一段代碼
con=KbName('return'); %return 就是回車鍵 tb1=GetSecs; %記錄當前時間 while 1; %一直循環 [KD,SECS,KC]=KbCheck; %查詢鍵盤狀態 tb2=GetSecs; %記錄當前時間 if KC(con); % 檢測return鍵是否被按 rt=tb2-tb1; %計算反應時 break; %跳出當前循環 end end
% 下面是當被試做出鼠標按鍵反應的時的實驗程序的一段代碼
clear all;close all; [wptr,~]=Screen('OpenWindow',0,255,[50 50 450 250]); Screen('DrawText',wptr,'Left button: Draw a Circle'); Screen('DrawText',wptr,'Right button: Exit',0,20); Screen('Flip',wptr); while true %一直循環 [x,y,buttons]=GetMouse(wptr);%檢測當前窗口的鼠標狀態,x與y表示鼠標的坐標位置,button有3個值,1是左鍵,2是中間鍵,3是右鍵 if buttons(3) %若按了右鍵 break; %跳出當前循環 elseif buttons(1) %若按了左鍵 Screen('DrawText',wptr,'Left button: Draw a Circle',0,0); Screen('DrawText',wptr,'Right button: Exit',0,20); Screen('FillOval',wptr,0,[x-10 y-10 x+10 y+10]);%后兩個參數是顏色和位置 Screen('Flip',wptr); end end sca;
% sca是Screen('CloseAll')的簡寫,關閉所有窗口,多用於實驗結束的時候
