Transcript Document

StatLab
Matlab Workshop
7/17/2015
1
Resources
Useful links: http://statlab.stat.yale.edu/help/FAQ/matlab_FAQ.jsp
The help links on this page include Mathworks’
Getting Started (the official online
documentation of Matlab) Kermit Sigmon’s
MATLAB Primer (a very good beginner
manual); University of Utah’s MATLAB Tutorial
and some others.
MATLAB’s online help manual
Yale University StatLab
http://www.yale.edu/statlab
2
What is MATLAB?




MATLAB is a matrix-based tool for numerical
computations. It’s very powerful and easy to use.
Both programming language and interactive
environment
Very fast native functions; very slow when
processing loops
Lots of available toolboxes
Yale University StatLab
http://www.yale.edu/statlab
3
Launching Matlab


Click MATLAB in the start menu
(on Unix systems: type “matlab” to enter
interactive mode)
Yale University StatLab
http://www.yale.edu/statlab
4
The Interface





Main Window: Input/Output
Workspace: consists of the variables
you create during a MATLAB session;
Command History: double click lines
to evaluate them;
Current Directory browser: shows
you where you are.
Editor/Debugger: pops up when you
create an M-file (click on “New”
button to launch it.)
Yale University StatLab
http://www.yale.edu/statlab
5
Entering Matrices



Yale University StatLab
http://www.yale.edu/statlab
Matrices can be
Entered manually
A = [1 2 3 ; 4 5 6 ; 7 8 9]
Generated by built-in functions
Loaded from a file
6
Matrix operations:






+ addition
- subtraction
* multiplication
^ power
‘ transpose
\ left division, / division
x = A \ b is the solution of A * x = b
x = b / A is the solution of x * A = b

To make ‘*’ , ‘^’, ‘\’ and ‘/’ apply element-by-element,
we precede the operators by ‘.’
Yale University StatLab
http://www.yale.edu/statlab
7
Subscripts:



Subscripts: the element in row i and column j of
A is denoted by A(i, j).
i,j can also be vectors of indices or logical arrays:
A=4*[1 2 3 4 5 6 7 8 9]’
b=A>18; c=[5 6 7 8 9]’
A(b) gives same result as A(c)
Yale University StatLab
http://www.yale.edu/statlab
8
The Colon Operator ‘:’


The colon ‘:’ is one of MATLAB ’s most important
operators. It has many formats:
[0:0.2:3] is a row vector containing integers from 0 to
3, in increments of 0.2
Subscript expressions involving colons refer to
portions of a matrix:
A(1:3 , 2) is the first to the third elements of the
second column of A.
Yale University StatLab
http://www.yale.edu/statlab
9
Working with Matrices:





Four functions that generate basic matrices:
Zeros: all zeros. A = zeros(1,3)
Ones: all ones. A = ones(2,4)
Rand: elements are U[0,1] random variables
A = rand(3,5)
Randn: elements are standard-normal random variables
A = randn(2,5)
Be careful: Matlab always sets the same seed.
Get ‘more random’ numbers by typing
rand('state', sum(100*clock))
Yale University StatLab
http://www.yale.edu/statlab
10
Working with Matrices (2)



A=eye(3) gives a 3-by-3 identity matrix
sparse(m,n): same as zeros(m,n), use if
most elements are zeros.
Concatenation: join small (compatible)
matrices to make bigger ones:
B = [A A-2; A*2 A/4]

Deleting rows and columns:
B(:,2) = [ ]
Yale University StatLab
http://www.yale.edu/statlab
11
Putting it together


Many operations can take Matrix inputs. Example:
A = [1 2 3 ; 4 5 6 ; 7 8 9]
B=A>5
Use indices and element-by-element operations to avoid
slow and unwieldy loops:
beta=0.925;
auxil=1:200;
betavec(auxil)=beta.^auxil;
betavec=betavec’
Yale University StatLab
http://www.yale.edu/statlab
12
Suppressing Output:
If you simply type a statement and press Enter,
MATLAB automatically displays the results on screen.
If you end the line with a semicolon ‘;’, MATLAB
performs the computation but does not display any
result.

Example: C = randn(5,1) v.s.
C = randn(5,1);
Yale University StatLab
http://www.yale.edu/statlab
13
Functions:




MATLAB provides a large number of standard
elementary mathematical functions, including abs,
sqrt, exp, sin.
For a list of the elementary mathematical functions,
type:
help elfun
For a list of more advanced mathematical and matrix
functions, type
help specfun
help elmat
For a list of data analysis functions, type
help datafun
Yale University StatLab
http://www.yale.edu/statlab
14
Flow Control:





MATLAB has following flow controls:
If statement
For loops
While loops
Continue statement
Break statement
Yale University StatLab
http://www.yale.edu/statlab
15
if … elseif … else … end
If A > B
‘greater’
elseif A < B
‘less’
elseif A == B
‘equal’
else error(‘Unexpected situation’)
end
Yale University StatLab
http://www.yale.edu/statlab
16
for … end
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j)
end
end
Yale University StatLab
http://www.yale.edu/statlab
17
Graphics: plot
x = [0 : .01 : 2*pi];
y = sin(x);
plot(x,y)
y2 = sin(x-.25)
y3 = sin(x-.5)
plot(x,y,x,y2,x,y3)
Yale University StatLab
http://www.yale.edu/statlab
18
Programming with MATLAB:

Files that contain code in the MATLAB
language are called M-files. You can create Mfiles using the matlab editor, then use them as
you would any other MATLAB functions or
commands. There are two types of M-files:
Scripts and Functions.
Yale University StatLab
http://www.yale.edu/statlab
19
Scripts







Scripts: a bunch of code grouped together;
doesn’t accept argument or return output.
Example
open m-file editor
type disp(‘Hello World’)
save as test.m in c:\temp
add c:\temp to path (File/Set Path)
Execute by typing “test”
Yale University StatLab
http://www.yale.edu/statlab
20
Functions:


Functions are M-files that can accept input
arguments and return output arguments. The
name of the M-file and of the function should
be the same.
For example, save this as area.m in c:temp:
function ar = area(radius)
ar=pi*radius^2;
Yale University StatLab
http://www.yale.edu/statlab
21
Function functions




Once you have defined a function, you can use
functions that have functions as arguments – function
functions!
E. g. search for minima, zero values.
Example: first we define the function x2-3:
function x=example(input)
x=input.^2-3;
Now, we can easily find minima and zeros:
fminbnd(@example,-2,2)
fzero(@example,2)
Yale University StatLab
http://www.yale.edu/statlab
22
Learn from others





There are lots of Matlab functions already out
there:
Google them!
http://www.mathworks.com/matlabcentral/
James LeSage’s econometrics toolbox:
http://www.spatial-econometrics.com/
Don’t forget to “set paths” so that Matlab can
find your new .m-files.
Yale University StatLab
http://www.yale.edu/statlab
23
A Simple Linear Regression Example
v = mvnrnd([0,1], sqrt([10,1;1,5]), 100);
x=v(:,1)
y=v(:,2)
scatter( x', y' )
hold()
x=[x(:,:),diag(eye(100))]
a = (x'*x)^-1*x'*y
plot( x, x*a(1) + a(2) )
Yale University StatLab
http://www.yale.edu/statlab
24