Title: Matlab Class 2 Xiaotao Su, Ph.D. Visual Psychophysicist
1Matlab Class 2Xiaotao Su, Ph.D.Visual
Psychophysicist IT Group LeaderRutgers Center
for Cognitive Science (RuCCS)
2Character Vectors And Numeric Vectors
- 'hello world' is referred to as a character
string or a character vector - 35, 26.3, 11, 4 is a numeric vector
- These are the two main data types in matlab
h e l l o w o r l d
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11)
35 26.3 11 4
(1) (2) (3) (4)
3Character Vectors (aka Strings) And Numeric
Vectors
- How to convert between these two data types? What
if I have a string, '39.5' and I want to add to
it? - num2str str2num
- str2num('39.5') 5
- 'hello w', 'orld'
- a 3, 9
- b 12.6, 8
- a, b
- c '1', num2str(39.5)
- str2num(c) 200
4Taking inputs
- Create a new program called math.m
- math.m
-
- Carries out a series of calculations on two
- numbers
-
- written by Your Name July 2010
-
5- clear all
- take inputs
- num1input('what is the first number?')
- num2input('what is the second number?')
- show calculations
- disp(num2str(num1), '', num2str(num2), '',
num2str(num1num2)) - disp(num2str(num1), '-', num2str(num2), '',
num2str(num1-num2))
6boolean expressions
- Boolean expressions either return 1 for true or
0 for false - Possible operators
gt gt lt lt
equals greater than greater than or equal to less than greater than or equal to and or
7- 11
- (1 1)2
- (5 5) lt 10
- (5 5) lt10
- (1 1) (23)
- (1 1) (23)
- 5 (5 lt 10)
Note Put operations inside parenthesis so they
are preformed first.
8Conditionals (if statements)
- if(Boolean Expression)
- do something
- end
- you can also do this
- if(boolean expression)
- do something
- else
- do something else
- end
or this if(boolean expression) do
something elseif(boolean expr2) do something
else end
9Back to math.m
- if ( (round(num1)num1) (round(num2)num2) )
- disp('num1 and num2 are integers')
- end
10- if ( (round(num1)num1) (round(num2)num2) )
- disp('num1 and num2 are integers')
- elseif(round(num1)num1)
- disp('only num1 is an integer')
- elseif(round(num2)num2)
- disp('only num2 is an integer')
- else
- disp('neither number is an integer')
- end
11Task 1
- Have math.m tell me which number is larger then
the other - the biggest number is
gt gt lt lt
equals greater than greater than or equal to less than greater than or equal to and or
12Screen drawing and psychtoolbox
Origin
Coordinates are measured in
pixels.
X ----------- Positive -gt
Y
Positive
Max X and Y
13How you typically work with the psychtoolbox
Back Buffer (invisible)
Front Buffer
14How you typically work with the psychtoolbox
Step 1 Draw Shape to the back buffer
Front Buffer
15How you typically work with the psychtoolbox
Step 2 Flip the back buffer to the front buffer
16How you typically work with the psychtoolbox
Back Buffer is automatically cleared
17How you typically work with the psychtoolbox
Now you can continue with your next frame of
animation
18How you typically work with the psychtoolbox
Flip the back buffer to the front buffer
19How you typically work with the psychtoolbox
Back Buffer is automatically cleared
20Set up program draw_stuff
- draw_stuff.m
-
- Draws stuff on the screen
21Initialize the main window
- draw_stuff.m
-
- Draws stuff on the screen
- clear all
- which_screen0
22Set up program draw_stuff
- draw_stuff.m
-
- Draws stuff on the screen
- clear all
- which_screen0
- window_ptr, screen_dimensions
- Screen(0,'OpenWindow', 0, 0, 0)
0
Vector specifying Screen color
Command issued to the psychtoolbox Screen function
0 is main screen (allows for multiple monitors)
red, green, blue
23Set up program draw_stuff
- draw_stuff.m
-
- Draws stuff on the screen
- clear all
- which_screen0
- window_ptr, screen_dimensionsScreen(0,'OpenWind
ow', 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
24Draw shape in back buffer
- draw_stuff.m
-
- Draws stuff on the screen
- clear all
- which_screen0
- window_ptr, screen_dimensionsScreen(0,'OpenWind
ow', 0, 0, 0) - shape_dimensions screen_dimensions/2
- Screen(window_ptr, 'FillRect', 0,0,255,
shape_dimensions)
X1, Y1
Front buffer
X2, Y2
Back buffer
25Flip the back buffer to the front buffer
- draw_stuff.m
-
- Draws stuff on the screen
- clear all
- which_screen0
- window_ptr, screen_dimensionsScreen(0,'OpenWind
ow', 0, 0, 0) - shape_dimensions screen_dimensions/2
- Screen(window_ptr, 'FillRect', 0,0,255,
shape_dimensions) - Flip the buffers
- Screen(window_ptr,'Flip')
Front buffer
Back buffer
26Clear screen
- ltltltltsnipgtgtgtgt
- clear all
- which_screen0
- window_ptr, screen_dimensionsScreen(0,'OpenWind
ow', 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
27Tic and toc
- tic starts a timer
- toc tells you the number of seconds since when
you ran toc
28While loop
- while is a type of loop that runs while a
condition is true - while(boolean statement)
- do something many times
- end
- you would stop repeating the loop when the
- boolean statement is false OR if you use
- break
29While program
- tic
- loops 0
- while(toclt5)
- loops loops1
- disp('number of loops ', num2str(loops))
- disp('number of seconds ', num2str(toc))
- end
-
30While program stopping after 10 loops
- tic
- loops 0
- while(toclt5)
- loops loops1
- disp('number of loops ', num2str(loops))
- disp('number of seconds ', num2str(toc))
- if(loopsgt10)
- break
- end
- end
-
31Making a movie
- draw_stuff.m
-
- Draws stuff on the screen
- clear all
- which_screen0
- window_ptr, screen_dimensions
- Screen(0,'OpenWindow', 0, 0, 0)
- shape_dimensions screen_dimensions/2
- Screen(window_pointer, 'FillRect',
- 0,0,255, shape_dimensions)
32Task 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
33Task 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