Created
June 7, 2016 17:31
-
-
Save carrien/bd4bdf15904120f22f541e9e4a5da70f to your computer and use it in GitHub Desktop.
Flip timing test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function [expt] = run_fliptest() | |
%% setup | |
ntrials = 50; % number of trials per block | |
stimdur = .1; % time stim is on screen, in seconds | |
interstimdur = .05; % minimum time between stims, in seconds | |
interstimjitter = .05; % maximum extra time between stims (jitter) | |
% psychtoolbox | |
AssertOpenGL; % Running on PTB-3? Abort otherwise. | |
while KbCheck; end; % Wait for release of all keys on keyboard | |
%% experiment | |
try | |
% setup screen | |
screens=Screen('Screens'); | |
screenNumber=max(screens); | |
win = Screen('OpenWindow', screenNumber); | |
Screen('FillRect', win, [0 0 0]); | |
Screen('TextFont', win, 'Arial'); | |
Screen('TextSize', win, 50); | |
% display experiment text | |
WaitSecs(1); | |
for t=1:ntrials | |
DrawFormattedText(win,'test','center','center',[255 255 255]); % put text in buffer | |
rectimes(t) = GetSecs; | |
schedtimes(t) = rectimes(t) + .1; % schedule flip | |
[vbltimes(t), stimonsettimes(t), fliptimes(t), missed(t), beampos(t)] = Screen('Flip',win,schedtimes(t)); % draw text to screen | |
WaitSecs(stimdur); | |
Screen('Flip',win); % clear screen | |
WaitSecs(interstimdur); | |
WaitSecs(rand*interstimjitter); % add jitter | |
end | |
[monitorFlipInterval,nrValidSamples,stddev] = Screen('GetFlipInterval',win); | |
Screen('CloseAll'); | |
catch | |
Screen('CloseAll'); | |
psychrethrow(psychlasterror); | |
end | |
% plot differences in scheduled vs. measured times | |
figure; | |
plot(vbltimes-schedtimes,'b'); hold on; | |
plot(stimonsettimes-schedtimes,'r--'); | |
plot(fliptimes-schedtimes,'g.') | |
legend({'VBLTimes - When', 'StimOnsets - When', 'FlipTimes - When'}); | |
xlabel('trial number'); ylabel('ms past scheduled time') | |
% output | |
expt.schedtimes = schedtimes; | |
expt.vbltimes = vbltimes; | |
expt.stimonsettimes = stimonsettimes; | |
expt.fliptimes = fliptimes; | |
expt.rectimes = rectimes; | |
expt.missed = missed; | |
expt.beampos = beampos; | |
expt.monitorFlipInterval = monitorFlipInterval; | |
expt.nrValidSamples = nrValidSamples; | |
expt.stddev = stddev; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment