用psychtoolbox获取按键KbGet——代码详解
因为行为学实验设计需要用到psychtoolbox,我不是心理系专业的,我是学数学的,但有Matlab的基础。我发现KbGet的代码都能查到,但是很少有详解的,我就分享一点我的笔记。
KbGet.m
的代码块
function [secs key] = KbGet(limit, varargin)
%[secs key] = KbGet([limit])
%获取一个按键,并返回得到这个按键时的时间
%可以设置limit来限制按键反应时间,超时则返回key = 0
%精度比KbStrokeWait高
%author: zbg 2015-2
%原文 http://my.oschina.net/u/1387924/blog/379421
if nargin == 0
limit = inf;
end
[keyIsDown, oldsecs, oldkeyCode, deltaSecs] = KbCheck;
x = [];
while numel(x) == 0
[keyIsDown, secs, keyCode, deltaSecs] = KbCheck;
x = find(keyCode > oldkeyCode);
oldkeyCode = keyCode;
if secs - oldsecs > limit
key = 0;
return
end
end
key = x(1);
end
笔记
(1) nargin: number of input arguments 在函数体内部,nargin用来判断输入变量个数;
(2) numel(A): 返回数组A中元素的个数
(3) KbCheck:
[keyIsDown, secs, keyCode, deltaSecs] = KbCheck
%secs:Time of keypress as returned by GetSecs
%——按下按键的时间节点)
%keyCode:A 256-element logical array.
%Each bit within the logical array represents one keyboard key. If a key is pressed, its bit is set.
%——keyCode是一个输入只有0和1的逻辑矩阵,当一个按键按下时,矩阵对应的位置由0变为1
%To convert a keyCode to a vector of key numbers use FIND(keyCode)
%——把KeyCode这个逻辑矩阵转换为key numbers的矩阵,可以用FIND(keyCode), 因为FIND(x)这个函数可以返回有非零元素的位置
学习psychtoolbox之路很长,我会继续分享我的一些代码心得!感谢阅读:)