跳轉到內容

MATLAB 程式設計/Psychtoolbox/示例程式碼

來自華夏公益教科書,開放的書籍,開放的世界
Back to MATLAB Programming/Psychtoolbox
  • Imageviewer - 在螢幕上顯示影像 (OSX)
  • OpenManyScreens - 在所有連線的顯示器上開啟一個視窗 (OSX)
  • xsearch - 通用視覺搜尋程式碼 (OS9/WIN)
  • ImgShow - 從磁碟載入一系列影像並以隨機順序顯示它們指定的時間段 (OS9/WIN)
  • eyelink 工具箱 - 將 sr-research eyelink 影片眼動儀與跨平臺 opengl psychtoolbox 一起使用 (OSX/win)

有用指令碼

[編輯 | 編輯原始碼]

程式碼片段

[編輯 | 編輯原始碼]
  • 一個函式,它接受一個所需鍵的列表,並返回其中被按下且更靠近傳遞的列表前端的鍵的編號。它忽略其他按鍵。
 function keyPressed = getKeys(keysWanted) % keysWanted is a matrix list of keys you are 
                                           % waiting for e.g, [124 125 kbName('space')]
  FlushEvents('keydown');
  success = 0;
  while success == 0
   pressed = 0;
   while pressed == 0
    [pressed, secs, kbData] = KbCheck;
   end;
    for i = 1:length(keysWanted)
      if kbData(keysWanted(i)) == 1
       success = 1;
       keyPressed = keysWanted(i);
       FlushEvents('keydown');
       break;
      end;
    end;
    FlushEvents('keydown');
   end;


  • 等待一個按鍵,兩秒後繼續
  tEnd=GetSecs+2;
  while ~KbCheck & GetSecs<tEnd
    % Sleep one millisecond after each check, so we don't
    % overload the system in Rush or Priority > 0
    WaitSecs(0.001);
  end
  • 將命令視窗置於最前面。即使它不會出現在由 Screen 開啟的視窗前面,包含它也是有用的,因為它允許您鍵入例如 Screen('Closeall') 來關閉已崩潰程式的視窗
commandwindow;
  • 問題: KbCheck 似乎不會等待按鍵,比預期更早退出迴圈,並繼續返回按鍵。解決方案: 確保首先等待任何按鍵釋放。例如
commandwindow;
touch=1;
while touch==1
    [touch, secs, keycode] = KbCheck;
    % Sleep one millisecond after each check, so we don't
    % overload the system in Rush or Priority > 0
    WaitSecs(0.001);
end
touch = 0;
i=0;
while ~touch
 % Sleep one millisecond after each check, so we don't
 % overload the system in Rush or Priority > 0
 WaitSecs(0.001);
 [touch, secs, keycode] = KbCheck;
 fprintf('.');
 if i==50
  fprintf('\n');
  i=0;
 end
 i=i+1;
end
clc; % clear command window, removing any typed characters
fprintf('\ntouch down\n\n');
華夏公益教科書