用psychtoolbox获取按键KbGet——代码详解

用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是一个输入只有01的逻辑矩阵,当一个按键按下时,矩阵对应的位置由0变为1
%To convert a keyCode to a vector of key numbers use FIND(keyCode)
%——把KeyCode这个逻辑矩阵转换为key numbers的矩阵,可以用FIND(keyCode), 因为FIND(x)这个函数可以返回有非零元素的位置

学习psychtoolbox之路很长,我会继续分享我的一些代码心得!感谢阅读:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值