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

27
Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Upload: oswald-blair

Post on 21-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Introduction To MatlabClass 4

Instructors: Hristiyan (Chris) Kourtev

and Xiaotao Su, PhD

Double click the matlab icon

When prompted click “Skip”

Page 2: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

Managing data

• To manage basic numerical data we use matrices

• our_data = [1, 4, 10.59, 12; 2, 9, 18.76, 5; 3, 7, 1.13, 2];

Trial 1

Trial 2

Trial 3

Response

1

Response

2

(perhaps the

response time)

Response

3

Trial Number

Page 3: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

• our_data = [1, 4, 10.59, 12; 2, 9, 18.76, 5; 3, 7, 1.13, 2];

• To set the 4th row (4th trial) data:our_data(4, :) = [4, 7, 2.93, 3]

– or we could

our_data(5, 1) = 5;

our_data(5, 2) = 1;

our_data(5, 3) = 2.10;

our_data(5, 4) = 9;

• To get this 4th row data– trial_data = our_data(4, :)

: gets or sets all elements

from row or column

Page 4: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

%guessing_game.m

%test to see if subject is psychic

clear all;

%settings

num_trials = 5;

highest_number = 3;

%get info

subject_name = input('What is your name?', 's');

for t = 1:num_trials

%trial set up

random_num = ceil(rand*highest_number);

%perform experiment

start_time = GetSecs;

disp('I am thinking of a number between');

disp([' 1 and ', num2str(highest_number)]);

response = input('What is it?');

stop_time = GetSecs;

response_time = stop_time - start_time;

is_correct = (response==random_num);

if(is_correct)

disp('Right!');

else

disp(['Wrong! The correct answer was ', ...

num2str(random_num)]);

end

disp('Press any key to continue');

pause

disp('--------');

%record data

guessing_game_data(t, :) =...

[t, response_time, response, ...

random_num, is_correct ];

end

Page 5: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

%guessing_game.m

%test to see if subject is psychic

clear all;

%settings

num_trials = 5;

highest_number = 3;

%get info

subject_name = input('What is your name?', 's');

for t = 1:num_trials

%trial set up

random_num = ceil(rand*highest_number);

%perform experiment

start_time = GetSecs;

disp('I am thinking of a number between');

disp([' 1 and ', num2str(highest_number)]);

response = input('What is it?');

stop_time = GetSecs;

response_time = stop_time - start_time;

is_correct = (response==random_num);

if(is_correct)

disp('Right!');

else

disp(['Wrong! The correct answer was ', ...

num2str(random_num)]);

end

disp('Press any key to continue');

pause

disp('--------');

%record data

guessing_game_data(t, :) =...

[t, response_time, response, ...

random_num, is_correct ];

end

Task 1:

Write this section of the program

Hint:

input without ‘s’ is a good way

To get numeric responses from

The subject

Page 6: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

%guessing_game.m

%test to see if subject is psychic

clear all;

%settings

num_trials = 5;

highest_number = 3;

%get info

subject_name = input('What is your name?', 's');

for t = 1:num_trials

%trial set up

random_num = ceil(rand*highest_number);

%perform experiment

start_time = GetSecs;

disp('I am thinking of a number between');

disp([' 1 and ', num2str(highest_number)]);

response = input('What is it?');

stop_time = GetSecs;

response_time = stop_time - start_time;

is_correct = (response==random_num);

if(is_correct)

disp('Right!');

else

disp(['Wrong! The correct answer was ', ...

num2str(random_num)]);

end

disp('Press any key to continue');

pause

disp('--------');

%record data

guessing_game_data(t, :) =...

[t, response_time, response, ...

random_num, is_correct ];

end

Page 7: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

%guessing_game.m

%test to see if subject is psychic

clear all;

%settings

num_trials = 5;

highest_number = 3;

%get info

subject_name = input('What is your name?', 's');

for t = 1:num_trials

%trial set up

random_num = ceil(rand*highest_number);

%perform experiment

start_time = GetSecs;

disp('I am thinking of a number between');

disp([' 1 and ', num2str(highest_number)]);

response = input('What is it?');

stop_time = GetSecs;

response_time = stop_time - start_time;

is_correct = (response==random_num);

if(is_correct)

disp('Right!');

else

disp(['Wrong! The correct answer was ', ...

num2str(random_num)]);

end

disp('Press any key to continue');

pause

disp('--------');

%record data

guessing_game_data(t, :) =...

[t, response_time, response, ...

random_num, is_correct ];

end

Page 8: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

CSV format

• Stands for “Comma separated value”

• It is a simple text file for data storage

• Each data item is delimited (separated) by a comma

• Each data row is delimited by a return character

Page 9: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

Notepad example

• Start->run

• notepad

1, 4, 9.3

1, 9, 100

4, 0, 12

Save as test.csv

Double click -> opens in excel

Page 10: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

csvwrite

• saves a 2d matrix as a csv file

• csvwrite(FILENAME, MATRIX_VAR)

• my_matrix = [3, 5; 1, 2];

• csvwrite(‘my_data.csv’, my_matrix);

Page 11: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

%guessing_game.m

%test to see if subject is psychic

clear all;

%settings

num_trials = 5;

highest_number = 3;

%get info

subject_name = input('What is your name?', 's');

for t = 1:num_trials

%trial set up

random_num = ceil(rand*highest_number);

%perform experiment

start_time = GetSecs;

disp('I am thinking of a number between');

disp([' 1 and ', num2str(highest_number)]);

response = input('What is it?');

stop_time = GetSecs;

response_time = stop_time - start_time;

is_correct = (response==random_num);

if(is_correct)

disp('Right!');

else

disp(['Wrong! The correct answer was ', ...

num2str(random_num)]);

end

disp('Press any key to continue');

pause

disp('--------');

%record data

guessing_game_data(t, :) =...

[t, response_time, response, ...

random_num, is_correct ];

end

%data_storage

csvwrite([subject_name, '.csv'], …

guessing_game_data);

Page 12: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

csvread

• clear all;

• my_matrix = csvread(‘my_data.csv’);

• can be used to load parameters at the beginning of a program

• can be used to load data to analyze through matlab

Page 13: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

cell arrays

• this_is_a_matrix_and_a_vector = [5, 3, 9, 3]

• and_so_is_this = [‘hello’];

• which_is_the_same_as = [‘h’, ‘e’, ‘l’, ‘l’, ‘o’];

Page 14: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

cell arrays

• cell array provides a storage mechanism for dissimilar kinds of data

• they are like a matrix where each element is any other data type

example_cell_array = {‘cat’, 3, [5, 9];

‘zebra’, [10, 3; 9, 5], ‘dog’};

‘cat’ 3

‘zebra’ ‘dog’

5 9

10 3

9 5

Page 15: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

• a = example_cell_array{2, 3}

• example_cell_array{2, 1} = a

• example_cell_array{2, 2}(2, 1)

‘cat’ 3

‘zebra’ ‘dog’

5 9

10 3

9 5

Page 16: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

cell2csv

• Works just like csvwrite• Will only work with “simple” cell arrays

– no numeric vectors or matrices• data = {‘trial number’, ‘time’, ‘color’, ‘response’;

1, 5.99, ‘blue’, 3; 2, 4, ‘green’, 2;

3, 55, ‘yellow’, 2}

• cell2csv(‘somefile.csv’, data);

!Note: cell2csv is not a built in Matlab function. Download it here:http://ruccs.rutgers.edu/matlab_course/materials/summer_2010/class_7/cell2csv.m

Page 17: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

important note

• to add one data element to a cell array– data{5, 3} = 'yellow’

• curly braces

• To add one row of data– data(5, :) = {4, 2.93, ‘yellow’, 4}

• parenthesis

– data(trial+1, :) = {trial, time, color, response}

Page 18: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

Creating a vector of numbers

• This is similar to the way you create an iteration for a “for” loop

• x = (0:20) ----> x = [0, 1, … 20]

• x = (0.1:0.1:1) ---> x = [0.1, 0.2, … , 1.0]

• x = (0:2:20) ----> x = [0, 2, 4, … 20]

• x = (0:2:20)’ ---> vertical vector like the previous one

Page 19: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

discrete distributions and selecting segments

• you can use something like x=(0:20) to specify a discrete distribution of 21 different possibilities

• to select the first 6 elements you could sayy = x(1:6) ---> y would be [0, 1 … 5]

• Or to select the last 4 elements

• y = x(end-3:end) ---> y would be [17, 18, 19, 20]

Page 20: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

y = binopdf(x(1:6), 5, .8)

• used to generate a binomial distribution function the case in which one flips a weighted coin

• .8 probability of getting heads

• there are 6 possibilities (0 heads, 1 head… 5 heads

• y gives the probability of each of these outcomes

This function requires the stats toolbox

Page 21: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

Plotting

• Subplot will create a figure window for plotting

• subplot (2, 1, 2) will say we are going to create a (2 row, 1 column, …) figure. The last number specifies that we are currently going to write in the second element of this figure.

• plot(y) will create a graph on currently chosen section of the figure (specified by the third parameter in subplot)

Page 22: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

setting up the plot

• xlim([1 5]) %sets the limits of the x axis

• bar(y) %will use a bar graph

• ylabel(‘Probability of n’)

• xlabel(‘N’)

• title(‘Discrete distributions should be plotted as histograms’)

Page 23: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

more then one figure?

• figure %opens a new figure window

• All new subplots will go to the new figure

• subplot(2, 1, 1)

• bar(y)

• xlim([1 21]) %we want 21 possibilities

Page 24: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

more then one graph on a plot

• hold on %tells matlab to keep the previous graph and draw a new one on top

• stairs(cumsum(y), ‘r’)– cumsum(y) <--- each value is the sum of previous values of y

– ‘r’ makes the graph line red

– stairs will plot it as a staircase

• hold off % now any future graph additions will clear previous graphs on this plot

• legend(‘distribution’, ‘cumsum’)

Page 25: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

ezplot Easy-to-use function plotter

• ezplot(fun) plots the expression fun(x) over the default domain -2pi < x < 2pi.

• This example plots the implicitly defined function x2 - y4 = 0 over the domain [-2pi, 2pi]:

ezplot('x^2-y^4')

• You can specify a different domain by passing in a second argument to ezplot, in this case -6<x<6 and -2<y<1:

eq='y - sin(x) + 1/2';  ezplot(eq,[-6,6,-2,1])

Page 26: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

Solving Equations Using Matlab (symbolic toolbox)• http://people.clarkson.edu/~wwilcox/ES100/eqsolve.htm

• The present tutorial deals exclusively with numerical methods of solving algebraic and trigonometric equations, both single and several simultaneously, both linear and non-linear. 

• Analytical solutions can be obtained using the methods described in the symbolic tutorial.   When both symbolic and numerical methods work, sometimes one is simpler and sometimes the other.

Page 27: Introduction To Matlab Class 4 Instructors: Hristiyan (Chris) Kourtev and Xiaotao Su, PhD Double click the matlab icon When prompted click “Skip”

Optional Presentation Title

Unit Name

Solving Equations Using Matlab (examples)

• “fzero” command - finds the value of x for f(x) = 0. e.g. For equation  sin2(x) e-x/2 – 1 = 0

x = fzero('sin(x)^2*exp(-x/2)-1', -1)

• Using “solve” to solve linear and quadratic equations:

e.g. For equation y = x2 – 1, or y = 5x - 4

solve(‘x^2-1’);solve(‘5*x – 4’);

• And many more types of equations. Just read the tutorial and the help page for “solve”, “dsolve”, “fsolve”, “fzero”, etc.