matlab beginner training session review: introduction to matlab for graduate research
TRANSCRIPT
Matlab Beginner Training Session Review:
Introduction to Matlab for Graduate Research
Non-Accredited Matlab Tutorial Sessions for beginner to intermediate level users
Winter Session Dates: February 13, 2007 - March 7, 2007Session times: Tuesdays from 8:30am-10:00am, Wednesdays from 8:30pm-10:00amSession Locations: Humphrey Hall - Room 219
Instructors:
Robert Marino [email protected]
Course Website:
http://www.queensu.ca/neurosci/Matlab Training Sessions.htm
Last Semester
Weeks:
1. Introduction to Matlab and its Interface
2. Fundamentals (Operators)
3. Fundamentals (Flow)
4. Importing Data
5. Functions and M-Files
6. Plotting (2D and 3D)
7. Statistical Tools in Matlab
8. Analysis and Data Structures
Intermediate Sessions
Intermediate Lectures
•Term 1 review•Loading Binary Data•Nonlinear Curve Fitting•Statistical Tools in Matlab II•Creating Graphic User Interfaces (GUIs)
Other possible topics:•Writing ascii text data files•3D plotting and animating•Debugging Tools•Simulink Toolbox
Why Matlab?
Common Uses for Matlab in Research• Data Acquisition• Multi-platform, Multi Format data importing • Analysis Tools (Existing,Custom)• Statistics• Graphing• Modeling
Why Matlab?Multi-platform, Multi Format data importing • Data can be loaded into Matlab from almost any
format and platform• Binary data files (eg. REX, PLEXON etc.)• Ascii Text (eg. Eyelink I, II) • Analog/Digital Data files
PC
UNIX100101010
Subject 1 143
Subject 2 982
Subject 3 87 …
Why Matlab?Analysis Tools • A Considerable library of analysis tools exist for
data analysis• Provides a framework for the design, creation,
and implementation of any custom analysis tool imaginable
Why Matlab?
Graphing• A Comprehensive array of plotting options
available from 2 to 4 dimensions• Full control of formatting, axes, and other visual
representational elements
Why Matlab?
Modeling• Models of complex dynamic system interactions
can be designed to test experimental data
Understanding the Matlab Environment:
Executing CommandsBasic Calculation Operators:
+ Addition
- Subtraction
* Multiplication
/ Division
^ Exponentiation
Solving equations using variables• Matlab is an expression language• Expressions typed by the user are interpreted and evaluated
by the Matlab system• Variables are names used to store values • Variable names allow stored values to be retrieved for
calculations or permanently saved
Variable = Expression
Or
Expression
**Variable Names are Case Sensitive!
Using Matlab
>> x = 6
x = 6
>> y = 2
y = 2
>> x + y
Ans = 8
>> x * y
Ans = 12
>> x / y
Ans = 3
>> x ^ y
Ans = 36
Using Matlab
Working with Matrices
• Matlab works with essentially only one kind of object, a rectangular numerical matrix
• A matrix is a collection of numerical values that are organized into a specific configuration of rows and columns.
• The number of rows and columns can be any number
Example
3 rows and 4 columns define a 3 x 4 matrix having 12 elements
• A scalar is a single number and is represented by a 1 x 1 matrix in matlab.
• A vector is a one dimensional array of numbers and is represented by an n x 1 column vector or a 1 x n row vector of n elements
ExercisesEnter the following Matrices in matlab using spaces,
commas, and semicolons to separate rows and columns:
7231
9175
6211 553878122641
160
16
22
4
A = B =
C =
19246525
12100
2162855
42166418
D =
65D =
E = a 5 x 9 matrix of 1’s
ExercisesChange the following elements in each matrix:
7231
9175
661 553878122641
160
16
22
4
A = B =
C =
19246525
12100
2162855
42166418
D =
65D =
E = a 5 x 9 matrix of 1’s
76
76
76
76
76
0
0
0
Indexing MatricesA = [1 2 4 5
6 3 8 2]
• The colon operator can can be used to remove entire rows or columns
>> A(:,3) = [ ]
A = [1 2 5
6 3 2]
>> A(2,:) = [ ]
A = [1 2 5]
Matrix Operations
Scalar Operations• Scalar (single value) calculations can be can performed on
matrices and arrays
Basic Calculation Operators
+ Addition
- Subtraction
* Multiplication
/ Division
^ Exponentiation
Matrix Operations
Element by Element Multiplication• Element by element multiplication of matrices is performed with
the .* operator• Matrices must have identical dimensions
A = [1 2 B = [1 D = [2 2 E = [2 4 3 6]
6 3 ] 7 2 2 ]
3
3]
>>A .* D
Ans = [ 2 4
12 6]
Matrix Operations
Element by Element Division• Element by element division of matrices is performed with the ./
operator• Matrices must have identical dimensions
A = [1 2 4 5 B = [1 D = [2 2 2 2 E = [2 4 3 6]
6 3 8 2] 7 2 2 2 2]
3
3]
>>A ./ D
Ans = [ 0.5000 1.0000 2.0000 2.5000
3.0000 1.5000 4.0000 1.0000 ]
Matrix Operations
Matrix Exponents
• Built in matrix Exponentiation in Matlab is either:
1. A series of Algebraic dot products
2. Element by element exponentiation
Examples:• A^2 = A * A (Matrix must be square)• A.^2 = A .* A
Matrix Operations
Shortcut: Transposing Matrices• The transpose of a matrix is the matrix formed by interchanging
the rows and columns of a given matrix
A = [1 2 4 5 B = [1
6 3 8 2] 7
3
3]
>> transpose(A) >> B’
A = [1 6 B = [1 7 3 3]
2 3
4 8
5 2]
Matrix Operations
• Relational operators are used to compare two scaler values or matrices of equal dimensions
Relational Operators
< less than
<= less than or equal to
> Greater than
>= Greater than or equal to
== equal
~= not equal
Relational Operators
• Comparison occurs between pairs of corresponding elements • A 1 or 0 is returned for each comparison indicating TRUE or
FALSE• Matrix dimensions must be equal!
>> 5 == 5
Ans 1
>> 20 >= 15
Ans 1
Relational Operators
A = [1 2 4 5 B = 7 C = [2 2 2 2
6 3 8 2] 2 2 2 2]
Try:
>>A > B
>> A < C
Relational Operators
The Find Function
A = [1 2 4 5 B = 7 C = [2 2 2 2 D = [0 2 0 5 0 2]
6 3 8 2] 2 2 2 2]
• The ‘find’ function can also return the row and column indexes of of matching elements by specifying row and column arguments
>> [x,y] = find(A == 5)
• The matching elements will be indexed by (x1,y1), (x2,y2), …
>> A(x,y) = 10
A = [ 1 2 4 10
6 3 8 2 ]
Relational Operators
• Control flow capability enables matlab to function beyond the level of a simple desk calculator
• With control flow statements, matlab can be used as a complete high-level matrix language
• Flow control in matlab is performed with condition statements and loops
Control and Flow
Advantages of M-files
• Easy editing and saving of work• Undo changes• Readability/Portability - non executable comments can be
added using the ‘%’ symbol to make make commands easier to understand
• Saving M-files is far more memory efficient than saving a workspace
Matlab Scripts
• It is often necessary to only perform matlab operations when certain conditions are met
• Relational and Logical operators are used to define specific conditions
• Simple flow control in matlab is performed with the ‘If’, ‘Else’, ‘Elseif’ and ‘Switch’ statements
Condition Statements
If, Else, and Elseif
• An if statement evaluates a logical expression and evaluates a group of commands when the logical expression is true
• The list of conditional commands are terminated by the end statement
• If the logical expression is false, all the conditional commands are skipped
• Execution of the script resumes after the end statement
Basic form:
if logical_expression
commands
end
Condition Statements
Example
A = 6 B = 0
if A > 3
D = [1 2 6]
A = A + 1
elseif A > 2
D = D + 1
A = A + 2
end
What is evaluated in the code above?
Condition Statements
Switch• The switch statement can act as many elseif statements • Only the one case statement who’s value satisfies the original
expression is evaluated
Basic form:
switch expression (scalar or string)
case value 1
commands 1
case value 2
commands 2
case value n
commands n
end
Condition Statements
Example
A = 6 B = 0
switch A
case 4
D = [ 0 0 0]
A = A - 1
case 5
B = 1
case 6
D = [1 2 6]
A = A + 1
end
** Only case 6 is evaluated
Condition Statements
• Loops are an important component of flow control that enables matlab to repeat multiple statements in specific and controllable ways
• Simple repetition in matlab is controlled by two types of loops:
1. For loops
2. While loops
Loops
For Loops
• The for loop executes a statement or group of statements a predetermined number of times
Basic Form:
for index = start:increment:end
statements
end
** If ‘increment’ is not specified, an increment of 1 is assumed by matlab
Loops
For Loops
Examples:
for i = 1:1:100
x(i) = 0
end
• Assigns 0 to the first 100 elements of vector x• If x does not exist or has fewer than 100 elements,
additional space will be automatically allocated
Loops
For Loops
• Loops can be nested in other loops
A = [ ]
for i = 1:m
for j = 1:n
A(i,j) = i + j
end
end• Creates an m by n matrix A whose elements are the
sum of their matrix position
Loops
While Loops
• The while loop executes a statement or group of statements repeatedly as long as the controlling expression is true
Basic Form:
while expression
statements
end
Loops
While Loops
Examples:
A = 6 B = 15
while A > 0 & B < 10
A = A + 1
B = B – 2
end• Iteratively increase A and decrease B until the two
conditions of the while loop are met
** Be very careful to ensure that your while loop will eventually reach its termination condition to prevent an infinite loop
Loops
Breaking out of loops
• The ‘break’ command instantly terminates a for and while loop
• When a break is encountered by matlab, execution of the script continues outside and after the loop
Loops
Breaking out of loopsExample:
A = 6 B = 15
count = 1
while A > 0 & B < 10
A = A + 1
B = B + 2
count = count + 1
if count > 100
break
end
end
• Break out of the loop after 100 repetitions if the while condition has not been met
Loops
Functions in Matlab
• In Matlab, each function is a .m file– It is good protocol to name your .m file the same as
your function name, i.e. funcname.m
• function outargs=funcname(inargs);
Function outputinput
Importing Data
• Basic issue:– How do we get data from other sources into
Matlab so that we can play with it?
• Other Issues:– Where do we get the data?– What types of data can we import
• Easily or Not
Basics• Matlab has a powerful plotting engine that can
generate a wide variety of plots.
Generating Data• Matlab does not understand functions, it can
only use arrays of numbers.– a=t2
– b=sin(2*pi*t)– c=e-10*t note: matlab command is exp()– d=cos(4*pi*t)– e=2t3-4t2+t
• Generate it numerically over specific range• Try and generate a-e over the interval 0:0.01:2
t=0:0.01:10; %make x vector
y=t.^2; %now we have the appropriate y
% but only over the specified range
Quick Assignment 1• Plot a as a thick black line• Plot b as a series of red circles. • Label each axis, add a title and a legend
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
Time (ms)
f(t)
Mini Assignment #1
t2
sin(2*pi*t)
Quick Assignment 1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-1
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
Time (ms)
f(t)
Mini Assignment #1
t2
sin(2*pi*t)
figureplot(t,a,'k','LineWidth',3); hold on;plot(t,b,'ro')xlabel('Time (ms)');ylabel('f(t)');legend('t^2','sin(2*pi*t)');title('Mini Assignment #1')
Part A: Basics• The Matlab installation contains basic statistical
tools. • Including, mean, median, standard deviation,
error variance, and correlations• More advanced statistics are available from the
statistics toolbox and include parametric and non-parametric comparisons, analysis of variance and curve fitting tools
Mean and MedianMean: Average or mean value of a distributionMedian: Middle value of a sorted distribution
M = mean(A), M = median(A)M = mean(A,dim), M = median(A,dim)
M = mean(A), M = median(A): Returns the mean or median value of vector A.If A is a multidimensional mean/median returns an array of mean values.
Example:A = [ 0 2 5 7 20] B = [1 2 3 3 3 6
4 6 8 4 7 7];
mean(A) = 6.8mean(B) = 3.0000 4.5000 6.0000 (column-wise mean)mean(B,2) = 2.0000 4.0000 6.0000 6.0000 (row-wise mean)
Standard Deviation and Variance
• Standard deviation is calculated using the std() function• std(X) : Calcuate the standard deviation of vector x• If x is a matrix, std() will return the standard deviation of each column• Variance (defined as the square of the standard deviation) is
calculated using the var() function• var(X) : Calcuate the variance of vector x• If x is a matrix, var() will return the standard deviation of each column
Standard Error of the Mean
In Class Exercise 1:• Create a function called se that calculates the
standard error of some vector supplied to the function
Eg. se(x) should return the standard error of matrix x
Data Correlations• Matlab can calculate statistical correlations using the
corrcoef() function
• [R,P] = corrcoef(A,B)
• Calculates a matrix of R correlation coefficiencts and P significance values (95% confidence intervals) for variables A and B
A BR = A AcorA BcorA B AcorB BcorB
Part B: Statistics Toolbox• The Statistics tool box contains a large array of
statistical tools.• This lecture will concentrate on some of the
most commonly used statistics for research
1. Parametric and non-parametric comparisons
2. Curve Fitting
Comparison of Means• A wide variety of mathametical methods exist
for determining whether the means of different groups are statistically different
• Methods for comparing means can be either parametric (assumes data is normally distributed) or non-parametric (does not assume normal distribution)
Parametric Tests - TTEST[H,P] = ttest2(X,Y)
Determines whether the means from matrices X and Y are statistically different.
H return a 0 or 1 indicating accept or reject nul hypothesis (that the means are the same)
P will return the significance level
Parametric Tests - TTESTExample:For the data from exercise 3
[H,P] = ttest2(var1,var2)
>> [H,P] = ttest2(var1,var2)
H =1
P = 0.00000000000014877
-3 -2 -1 0 1 2 3-4
-3
-2
-1
0
1
2
3
4
5
Var
iabl
e 1
Variable 2
Curve Fitting• A least squares linear fit minimizes the square
of the distance between every data point and the line of best fit
• P = robustfit(X,Y) returns the vector B of the y intercept and slope, obtained by performing robust linear fit
Curve Fitting• Plotting a line of best fit in Matlab can be
performed using either a traditional least squares fit or a robust fitting method.
1 2 3 4 5 6 7 8 9 10
-2
0
2
4
6
8
10
12
Least squaresRobust