% Clear the workspace clear; close all; sca; % Setup PTB with some default values PsychDefaultSetup(2); % Seed the random number generator rng('shuffle'); % Get the screen numbers screens = Screen('Screens'); % Draw to the external screen if available screenNumber = max(screens); % Define black and gray black = BlackIndex(screenNumber); gray = GrayIndex(screenNumber); % Open an on screen window and color it gray [window, windowRect] = PsychImaging('OpenWindow', screenNumber, gray); % Set the blend function for the screen Screen('BlendFunction', window, 'GL_SRC_ALPHA', 'GL_ONE_MINUS_SRC_ALPHA'); % Get the size of the on screen window in pixels [screenXpixels, screenYpixels] = Screen('WindowSize', window); % Query the frame duration ifi = Screen('GetFlipInterval', window); % Set the text size Screen('TextSize', window, 40); % Setup the timing stimDisplayTime = 2.5; responseTime = 5; nTrials = 370; nBlocks = 2; stimuli = generateStimuli(500); % Create your stimuli here % Start the experiment for block = 1:nBlocks disp(['Starting block ', num2str(block)]); Screen('TextSize', window, 24); DrawFormattedText(window, 'Press Space to begin.', 'center', 'center', black); Screen('Flip', window); KbWait([], 2); for trial = 1:nTrials % Display the stimulus stimulus = stimuli(randi(numel(stimuli))); % Randomly pick a stimulus DrawFormattedText(window, stimulus, 'center', 'center', black); tStart = Screen('Flip', window); % Wait for the display time WaitSecs(stimDisplayTime); % Clear the screen Screen('Flip', window); % Wait for a response or timeout response = 0; tResponse = tStart; while GetSecs - tResponse < responseTime [keyIsDown, ~, keyCode] = KbCheck; if keyIsDown if keyCode(KbName('n')) response = 'novel'; break; elseif keyCode(KbName('r')) response = 'repeated'; break; end end end % Log the response results(block, trial) = {stimulus, response}; % Initiate the next trial KbWait([], 2); end % Break between blocks if block < nBlocks WaitSecs(1800); % 30 minutes break end end % Close the screen sca; function stimuli = generateStimuli(n) stimuli = cell(1, n); for i = 1:n stimuli{i} = ['Stimulus ', num2str(i)]; end end