230 likes | 246 Vues
StatLab Workshop: Intro to Matlab for Data Analysis and Statistical Modeling.
E N D
StatLab Workshop:Intro to Matlab for Data Analysisand Statistical Modeling
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
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
Launching Matlab • Click “MATLAB 7” from the start menu • (on Unix systems: type “matlab” to enter interactive mode)
The Interface • Main Window: Input/Output • Workspace: consists of the variables you create during a MATLAB session; • Command History: double click them 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.)
Entering Matrices Matrices can be • Entered manuallyA = [1 2 3 ; 4 5 6 ; 7 8 9] • Generated by built-in functions • Loaded from a file
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 ‘.’
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(5;6;7;8;9)
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.
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))
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) = [ ]
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’
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);
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
Flow Control: MATLAB has following flow controls: • If statement • For loops • While loops • Continue statement • Break statement
if … elseif … else … end If A > B ‘greater’ elseif A < B ‘less’ elseif A = = B ‘equal’ else error(‘Unexpected situation’) end
for … end for i = 1:m for j = 1:n H(i,j) = 1/(i+j) end end
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)
Programming with MATLAB: • Files that contain code in the MATLAB language are called M-files. You can create M-files 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.
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”
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;
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)
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.