introduction to matlab class 5 instructors: hristiyan (chris) kourtev and xiaotao su, phd

14
Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Upload: dora-wilson

Post on 19-Jan-2018

223 views

Category:

Documents


0 download

DESCRIPTION

Optional Presentation Title Unit Name 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_code]=KbCheck

TRANSCRIPT

Page 1: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Introduction To MatlabClass 5

Instructors: Hristiyan (Chris) Kourtevand Xiaotao Su, PhD

Page 2: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

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, type:

GetSecsTick

a = GetSecsGetSecs – aGetSecs – aGetSecs – aGetSecs – a

Command Window:

Page 3: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

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_code]=KbCheck

Page 4: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

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_code]=KbCheck

1 or 0 depending on if there was a key press

Time that this test took place (This is from GetSecs function)

Vector representing all of the input keys. Elements in the vector are set to 1 if pressed or 0 if not

Page 5: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

Speed Test Game%speed_test.m%tests your reaction timeWaitSecs(1);disp('Ready?');num_sec_to_start = rand*5+1;WaitSecs(num_sec_to_start);too_soon = 0;timer = GetSecs;while ((GetSecs-timer)<num_sec_to_start) ... && (~too_soon) [too_soon, secs, keyCode] = KbCheck; if(too_soon) break; endendif(too_soon) disp('you pressed the key too early');else

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

Page 6: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

Task 1• Make it so if someone presses a key too early, the

program give a message and exits.

• [key_press, secs, key_code]=KbCheck

1 or 0 depending on if there was a key press

Time that this test took place (This is from GetSecs function)

Vector representing all of the input keys. Elements in the vector are set to 1 if pressed or 0 if not

(Tip:first remove WaitSecs

Page 7: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

Speed Test Game%speed_test.m%tests your reaction timeWaitSecs(1);disp('Ready?');num_sec_to_start = rand*5+1;WaitSecs(num_sec_to_start);too_soon = 0;timer = GetSecs;while ((GetSecs-timer)<num_sec_to_start) ... && (~too_soon) [too_soon, secs, keyCode] = KbCheck; if(too_soon) break; endendif(too_soon) disp('you pressed the key too early');else

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

Page 8: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

What key was pressed?

• The third returned value is a vector representing all the keys with 1’s for pressed keys and zeros for keys that aren’t pressed

• To find the value of the key, use:key_name = KbName(key_code);This will return a string corresponding to that key_code

Page 9: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

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);

Page 10: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

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

Page 11: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

key_code vector when esc is pressed

0 0 …. 0 0 1 0 0 …..

(1) (2) …. (25) (26) (27) (28) (29) ….

key_code vector:

Values:

Indexes

So, key_code(27) is 1

esc’s key code is 27

Page 12: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

Exit on esc

%exit_on_esc.m esc_key = KbName('esc');i = 0;while 1 i = i+1 [key_is_down, secs, key_code] = KbCheck; if(key_code(esc_key)) break; endenddisp('Good Bye');

Page 13: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

Moving Dot

%moving_dot.mclear 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 toc<10 Screen(window, 'DrawOval', … color, shape); flip; [key_is_down, secs, key_code] … = KbCheck; if(key_code(esc_key)) break endendclear screen;

Page 14: Introduction To Matlab Class 5 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD

Optional Presentation Title

Unit Name

Task 2

• Make it so the arrow keys will move the dot