So, You*re Going to Write an Empirical Senior Thesis
Download
Report
Transcript So, You*re Going to Write an Empirical Senior Thesis
StatLab Workshop
Yale University
Maximiliano Appendino, Economics
October 18th, 2013
What is Matlab?
Matlab is a matrix-based tool for numerical
computations
Powerful
Easy to use
Programming language
Interactive environment
Lots of available toolboxes
Getting Help
Useful links: http://statlab.stat.yale.edu/help/FAQ/matlab_FAQ.jsp
Mathworks' Getting Started
Matlab Center
Kermit Sigmon’s Matlab Primer
Many others
Google your question
Matlab’s help
Online
Statlab Consultants: Max Perez Leon, Zhentao Shi
Acquiring Matlab
ITS Software Library & Resources:
http://www.yale.edu/its/software/
Free for students: Matlab R2013a
Available in Statlab locations
The Center for Science and Social Science Information
219 Prospect St, Basement
Kline Biology Tower
Rosenkranz Hall
115 Prospect St, Room 01
Launching Matlab
Double-click the “MATLAB R2013a” icon on the
desktop
Or click the start bottom, type MATLAB and enter
Usual Interface:
Command Window
Workplace
.MAT files
Command history
Current Folder
Interface
Can be used as a calculator
“help” gives you a list of all topics
“help topic” informs you about the particular topic
Example:
>> help
>> help stats
>> help normcdf
Entering Matrices
Entered manually:
>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
Generate it by built-in functions
Loaded from a file
.MAT or Menu File Import Data…
Matrix Operation
+ addition
- subtraction
* multiplication
^ power
‘ transpose
Element-by-element: preceded the operators by .
Subscripts:
>> B = A(2,3)
Matrix Operation
Matrix Multiplication
>> [1 2; 3 4]*[1 2; 3 4]
[7 10; 15 22]
Element-by-element Multiplication
>> [1 2; 3 4].*[1 2; 3 4]
[1 4;9 16]
The Colon Operator :
One of Matlab’s most important operators:
Portions of a matrix:
>> C = A(:,3)
>> D = A(1,:)
>> E = A(1:2,1:3)
Create matrices using increments:
>> F = [1:0.1:1.5]’
>> G = [1:0.1:1.5; 1:0.5:3.5]
Matrix Generation Functions
Zeros:
>> zeros(3,3)
Ones:
>> ones(3,3)
Identity:
>> eye(3)
More on matrices and linear algebra:
>> help elmat
>> help matfun
Random Matrices
Pseudo-Random numbers:
Change the seed:
>> rng('shuffle')
>> rng(15)
U[0,1] random variable:
>> RU = rand(3,4)
Normal random variable:
>> RN = randn(4,3)
Matrix manipulation
Concatenation:
>> A2 = [A A.^2; A./2 A]
Deleting rows and columns:
>> A2(:,7:8) = []
Adding rows and columns:
>> A2 = [1:2:11;A2]
Knowing the size:
>> sizeA2 = size(A2)
Suppressing Output
If you simply type a statement and press Enter Matlab
automatically displays the results on the Command
Window
If you end the line with a semicolon
; Matlab performs
the computation but does not display any result
>> H = rand(2,2)
>> H = rand(2,2);
>> H
Functions
Matlab provides a large number of standard
elementary mathematical functions:
>> abs(-10)
>> sqrt(9)
>> x = [0:0.1:2*pi];
>> y = sin(y);
Look for the ones you need:
Google
>> help
Graphics
Matlab generate 2-dimensional plots easily:
>> plot(x,y)
>> y2 = y + 0.25;
>> y3 = y + 0.50;
>> plot(x,y,x,y2,x,y3)
With a friendly interface to edit them
Graphics
Also 3-dimensional ones:
First we need to generate a grid:
>> [X,Y] = meshgrid([-2:.2:2]);
Second we can calculate the function to graph:
>> Z = X.*exp(-X.^2-Y.^2);
Finally the graph:
>> surf(X,Y,Z)
Programming
M-files contain Matlab code
.m is their extension
Matlab editor
Can be used as any command or function as long as
they are in the “Current Folder”
Two types:
Scripts
Functions
Scripts
A list of code grouped together
It does not accept argument or return output
Use them to register your work
Example:
File New Script
disp(‘Hello’)
File Save test.m
>> test
Functions
Functions are M-files that can accept input arguments
and return output arguments.
The M-file and the function should have the same
name
Example:
function ar = area(radius)
ar = pi*radius.^2;
File Save area.m
>> area(2)
Flow Control
Matlab has the standard flow controls
If statements
For loops
While loops
If statement
a = 10;
b = 11;
if a > b
disp('greater‘)
elseif a < b
disp('less‘)
else
disp('equal‘)
end
>> [a==b]
For loops
betavec = zeros(100,1);
beta = 0.925;
a = [1:100];
for i = 1:100
betavec(i)=beta^a(i);
end
plot(betavec)
But you should avoid for loops if possible:
>> newbetavec=beta.^a
While loops
The previous example would be:
betavec = zeros(100,1);
beta = 0.925;
a = [1:100];
i = 1;
while i < 101
betavec(i)=beta^a(i);
i = i + 1;
end
plot(betavec)
Solving problems
Check if somebody else has already solved it
Matlab itself
Anybody using Matlab
Solve it by yourself
Use Matlab’s matrix processing capacity as much as you
can
Be organized with your code
Thank you!
Questions,
Comments,
Problems to solve?