Download presentation
Presentation is loading. Please wait.
Published byRory Kane Modified over 10 years ago
1
Matlab Class 5 Xiaotao Su, Ph.D. Visual Psychophysicist & IT Group Leader Rutgers Center for Cognitive Science (RuCCS)
2
RuCCS Psychtoolbox Basics Computers are perfect for creating and displaying visual psychophysics stimuli Programs usually written in a low-level language (e.g. C or Pascal) to achieve full control of the hardware for precise stimulus display but are difficult to program Interpreted languages like Matlab are abstracted from hardware details and provide friendlier development environments The Psychophysics Toolbox is a software package that allows Matlab to fully control the hardware for precise stimulus display while retaining the flexibility and ease of Matlab.
3
RuCCS Screen drawing and psychtoolbox Screen Geometry X ----------- Positive -> Y Positive Origin Max X and Y Coordinates are measured in pixels.
4
RuCCS How you typically work with the psychtoolbox Back Buffer (invisible) Front Buffer
5
RuCCS How you typically work with the psychtoolbox Front Buffer Step 1: Draw Shape to the back buffer
6
RuCCS How you typically work with the psychtoolbox Step 2: Flip the back buffer to the front buffer
7
RuCCS How you typically work with the psychtoolbox Back Buffer is automatically cleared
8
RuCCS How you typically work with the psychtoolbox Now you can continue with your next frame of animation
9
RuCCS How you typically work with the psychtoolbox Flip the back buffer to the front buffer
10
RuCCS How you typically work with the psychtoolbox Back Buffer is automatically cleared
11
RuCCS Basic Display Loop in PsychToolbox (PTB) % Open Window % while some condition is true do the following % draw something % make some changes % repeat % Close screen
12
RuCCS Set up program draw_stuff % draw_stuff.m % % Draws stuff on the screen
13
RuCCS Skip Sync Tests Add to your program before opening the new screen Screen('Preference','SkipSyncTests', 1);
14
RuCCS Initialize the main window % draw_stuff.m % % Draws stuff on the screen clear all; which_screen=0;
15
RuCCS Set up program draw_stuff % draw_stuff.m % % Draws stuff on the screen clear all; which_screen=0; [window_ptr, screen_dimensions] =Screen(0,'OpenWindow', [0, 0, 0]); 0 is main screen (allows for multiple monitors) Command issued to the psychtoolbox Screen function [red, green, blue] Vector specifying Screen color 0
16
RuCCS Set up program draw_stuff % draw_stuff.m % % Draws stuff on the screen clear all; which_screen=0; [window_ptr, screen_dimensions]=Screen(0,'OpenWindow', [0, 0, 0]); Vector [x1, y1, x2, y2] Which could be: [0, 0, 800, 600] For an 800 X 600 display x1= 0 y1 = 0 x2= 800 y2 = 600
17
RuCCS Draw shape in back buffer % draw_stuff.m % % Draws stuff on the screen clear all; which_screen=0; [window_ptr, screen_dimensions]=Screen(0,'OpenWindow', [0, 0, 0]); shape_dimensions = screen_dimensions/2; Screen(window_ptr, 'FillRect', [0,0,255], shape_dimensions); X1, Y1 X2, Y2 Front buffer Back buffer
18
RuCCS % draw_stuff.m % % Draws stuff on the screen clear all; which_screen=0; [window_ptr, screen_dimensions]=Screen(0,'OpenWindow', [0, 0, 0]); shape_dimensions = screen_dimensions/2; Screen(window_ptr, 'FillRect', [0,0,255], shape_dimensions); %Flip the buffers Screen(window_ptr,'Flip'); Back buffer Flip the back buffer to the front buffer Front buffer
19
RuCCS Clear screen >>> clear all; which_screen=0; [window_ptr, screen_dimensions]=Screen(0,'OpenWindow', [0, 0, 0]); shape_dimensions = screen_dimensions/2; Screen(window_pointer, 'FillRect', [0,0,255], shape_dimensions); %Copy to main window Screen(window,'Flip'); %leave the image up for 5 seconds WaitSecs(5); %Clear screen and return control to matlab clear screen;
20
RuCCS Task 1: Making a movie % draw_stuff.m % % Draws stuff on the screen clear all; which_screen=0; [window_ptr, screen_dimensions] …=Screen(0,'OpenWindow', [0, 0, 0]); shape_dimensions = screen_dimensions/2; Screen(window_pointer, 'FillRect', … [0,0,255], shape_dimensions); % then loop and increment screen_dimensions at each turn
21
RuCCS Task 1: Basic Display Loop in PTB (code) % draw_stuff.m % % Draws stuff on the screen clear all; try which_screen=0; bg_color = [0, 0, 0]; [window_ptr, screen_dimensions]= … Screen(which_screen, … 'OpenWindow',bg_color); shape_dimensions = … screen_dimensions/2; tic; while (toc < 5) % move shape shape_dimensions = … shape_dimensions + [0,5,0,5]; % draw shape Screen(window_ptr, 'FillRect', … [0,0,255], shape_dimensions); % flip buffer and repeat Screen(‘Flip’, window_ptr); end clear Screen; catch clear Screen; end
22
RuCCS Moving Shapes around the Screen Shapes are defined by an array of numbers e.g. sh1 = [10, 15, 40, 45] ; % [x1, y1, x2, y2] To move a shape in the x direction by 5 pixels we need to increment both x coordinates by 5 e.g. sh1(1) = sh1(1) +5; sh1(3) = sh1(3) +5 or use another array: sh1 = sh1 + [5, 0, 5, 0]; Same for moving in the y direction Increment both if you want to move diagonally
23
RuCCS Task 2 Make the rectangle move to the bottom of the screen at 5 pixels per frame, then move right when it hits the bottom. When it hits the right, the program ends Hint: shape_dimensions(1) is x1, (2) is y1, (3) is x2, 4 is y2
24
RuCCS Task 3 When the rectangle hits the bottom make it change colors to red Hint: color is a 3 number vector red is [255, 0, 0]
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.