Matlab Class 7 Hristiyan Kourtev - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Matlab Class 7 Hristiyan Kourtev

Description:

Matlab Class 7 Hristiyan Kourtev & Xiaotao Su, Ph.D. Visual Psychophysicist & IT Group Leader Rutgers Center for Cognitive Science (RuCCS) – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 18
Provided by: Robert1938
Category:

less

Transcript and Presenter's Notes

Title: Matlab Class 7 Hristiyan Kourtev


1
Matlab Class 7Hristiyan Kourtev Xiaotao Su,
Ph.D.Visual Psychophysicist IT Group
LeaderRutgers Center for Cognitive Science
(RuCCS)
2
Accurate Timing
  • GetSecs is a psychtoolbox function that provides
    highly accurate timing.
  • It returns the number of seconds since the
    machine has started up
  • To test precision on your machine,
    typeGetSecsTick

Command Window
a GetSecs GetSecs a GetSecs a GetSecs
a GetSecs a
3
KbCheck
  • KbCheck is used to check if a key is being
    pressed and to find out what key is being
    pressed.
  • Returns three values
  • key_press, secs, key_codeKbCheck

4
KbCheck
  • KbCheck is used to check if a key is being
    pressed and to find out what key is being
    pressed.
  • Returns three values
  • key_press, secs, key_codeKbCheck

Vector representing all of the input keys.
Elements in the vector are set to 1 if pressed or
0 if not
Time that this test took place (This is from
GetSecs function)
1 or 0 depending on if there was a key press
5
Speed Test Game
disp('NOW!') timer GetSecs while
1 key_is_down, secs, key_code
KbCheck if(key_is_down)
break end end elapsed_time secs
- timer disp('Your time was ',
num2str(elapsed_time)) end
  • speed_test.m
  • tests your reaction time
  • WaitSecs(1)
  • disp('Ready?')
  • num_sec_to_start rand51
  • WaitSecs(num_sec_to_start)
  • too_soon 0
  • timer GetSecs
  • while ((GetSecs-timer)ltnum_sec_to_start) ...
  • (too_soon)
  • too_soon, secs, keyCode KbCheck
  • if(too_soon)
  • break
  • end
  • end
  • if(too_soon)
  • disp('you pressed the key too early')
  • else


6
Task 1
  • Make it so if someone presses a key too early,
    the program give a message and exits.

(Tipfirst remove WaitSecs
  • key_press, secs, key_codeKbCheck

Vector representing all of the input keys.
Elements in the vector are set to 1 if pressed or
0 if not
Time that this test took place (This is from
GetSecs function)
1 or 0 depending on if there was a key press
7
Speed Test Game
disp('NOW!') timer GetSecs while
1 key_is_down, secs, key_code
KbCheck if(key_is_down)
break end end elapsed_time secs
- timer disp('Your time was ',
num2str(elapsed_time)) end
  • speed_test.m
  • tests your reaction time
  • WaitSecs(1)
  • disp('Ready?')
  • num_sec_to_start rand51
  • WaitSecs(num_sec_to_start)
  • too_soon 0
  • timer GetSecs
  • while ((GetSecs-timer)ltnum_sec_to_start) ...
  • (too_soon)
  • too_soon, secs, keyCode KbCheck
  • if(too_soon)
  • break
  • end
  • end
  • if(too_soon)
  • disp('you pressed the key too early')
  • else

8
What key was pressed?
  • The third returned value is a vector representing
    all the keys with 1s for pressed keys and zeros
    for keys that arent pressed
  • To find the value of the key, use
  • key_name KbName(key_code)
  • This will return a string corresponding to that
    key_code

9
Simple program to find key mapping names
  • get_key_name.m
  • find out what the name of the key is
  • WaitSecs(1)
  • KbWait
  • key_is_down, secs, key_code KbCheck
  • name KbName(key_code)
  • disp(name)

10
KbName works the other way around as well
  • As you have seen
  • key_name KbName(key_code)
  • You can also do the following
  • return_key KbName(return)
  • esc_key KbName(esc)
  • up_key KbName(up)
  • And this will get you the index of the element in
    the key_code vector that corresponds to that key

11
key_code vector when esc is pressed
escs key code is 27
key_code vector
0 0 . 0 0 1 0 0 ..
(1) (2) . (25) (26) (27) (28) (29) .
Values
Indexes
So, key_code(27) is 1
12
Exit on esc
  • exit_on_esc.m
  • esc_key KbName('esc')
  • i 0
  • while 1
  • i i1
  • key_is_down, secs, key_code KbCheck
  • if(key_code(esc_key))
  • break
  • end
  • end
  • disp('Good Bye')

13
Moving Dot
moving_dot.m clear all screen_setup up_key
KbName('up') down_key KbName('down') left_key
KbName('left') right_key KbName('right') esc
_key KbName('esc') shape 20, 20, 100,
100 color 255, 0, 255 tic
while toclt10 Screen(window, FillOval',
color, shape) flip key_is_down,
secs, key_code KbCheck
if(key_code(esc_key)) break
end end clear screen
14
Task 2
  • Draw a circle
  • Make it so the arrow keys will move the circle
  • Make sure the circle cannot go outside of the
    boundaries of the screen.

15
Task 3 - color differentiation (part 1)
  • Take subject name
  • screen_setup
  • trial loop (start with 5)color rand255,
    rand255, rand255
  • put circles 1-4 on the screen
  • one of the four circles will be slightly off
    (start with /-50), color from the others on one
    of the three color dimensions (randomly chose
    dimension) careful that your deviation doesnt
    go gt255 or lt0
  • The subject will click on the circle they feel is
    different
  • record data (whatever would be useful)
  • if the subject was right in the last loop, the
    amount the color is off is cut in half,
    otherwise, increase by half
  • save trial data to csv

tip make a function to determine if the cursor
is in a shape function is_in in_shape(vect,
mouse_x, mouse_y)
16
Task 3 - color differentiation (part 2)
  • Further additions
  • allow the subject to press 1 - 4 to select a
    circle (using KbCheck)
  • put numbers in the circles
  • Hint You need to use the following commands
  • Screen('TextFont', window, fontName)Screen('Tex
    tSize', window, fontSize)
  • Screen('DrawText', window, textString, x, y,
    textColor)fontName can be Arial, Verdana
    or other
  • fontSize can be any number. Start with around 20
    and adjust as needed

17
Deploying Matlab Programs on other machines
  • The Matlab Builder/Deploytool deploytool
  • The Matlab Component Runtime (MCR)
  • Creating a standalone version of a Matlab program
    (Windows)
  • Creating a standalone version of a Matlab program
    (OSX)
  • The .NET Builder and deploying to the web
Write a Comment
User Comments (0)
About PowerShow.com