Presentation is loading. Please wait.

Presentation is loading. Please wait.

Laboratory in Oceanography: Data and Methods

Similar presentations


Presentation on theme: "Laboratory in Oceanography: Data and Methods"— Presentation transcript:

1 Laboratory in Oceanography: Data and Methods
Introduction to Matlab ® Programming Software MAR599, Spring 2009 Miles A. Sundermeyer

2 Introduction to Matlab
The name MATLAB stands for matrix laboratory Fundamentally a programming language – does not need compiling, runs off interactive command line or command scripts Matlab Website: Starting and quitting Matlab … Windows: double click the Matlab icon Linux: run “matlab” on command line Type ‘exit’ to quit (works in either)

3 Introduction to Matlab
.m files / coding % Code for generating plot of example of system of equations - this case % stage vs. flow rating curve, with observations at different times. % % Written by Miles A. Sundermeyer, 1/27/09 % set the variables time = [ ]; stage = [ ]; flow = [ ]; % create plot plot(stage,flow,'b*') xlabel('stage(m)') ylabel('flow (m^3s)') title('Stage vs. Discharge Rating Curve') set(gca,'xlim',[ ]) set(gca,'ylim',[ ]) % fit line to data % create X matrix for linear fit X = [stage' ones(size(time'))]; B = X\discharge'; % left divide y = Xb by X to solve for B=[m b]' % (need to transpose stage to column vector first) % now B contains both the slope, m, and intercept, b stagefit = [min(stage) max(stage)]; hold on plot(stagefit,[stagefit' ones(size(stagefit'))]*B,'r-');

4 Introduction to Matlab
.m files / coding Best Programming Practices Use .m files for all your code for sake of documentation and repeatability Include header summarizing what code does, inputs and outputs, author, and date written/modified. Use vertical and horizontal whitespace generously. Indentation and spacing should reflect the block structure of the code. Comments should describe what is happening, how it is being done, what parameters mean, which globals are used, and any restrictions or bugs. Avoid unnecessary comments. Variable names length trades off with clarity of expression use descriptive names whenever possible for clarity, simple names for things like ‘for’ loops. give units where appropriate (as comments, e.g., % (m/s) Function names should reflect what they do and what they return ***** Ended here on Lecture 2 *****

5 Introduction to Matlab
Getting Started / Introduction / Product Overview Desktop Tools and Development Environment MATLAB desktop and Command Window editor & debugger, code analyzer, help browser, viewer for workspace & files Mathematical Function Library Computational algorithms from basic (e.g., sum, sine, cosine, complex arithmetic) to sophisticated functions (e.g., matrix inverse, matrix eigenvalues, Bessel functions, FFTs). The Language A high-level matrix/array language with control flow statements, functions, data structures, input/output, and object-oriented programming features. Graphics Extensive graphing / annotation: incl. 2-D, 3-D, image processing, animation Ability to build graphical user interfaces on MATLAB applications External Interfaces Libraries for writing C and Fortran programs to interact with MATLAB Ability to call external routines from MATLAB and vice versa

6 Introduction to Matlab
Getting Started / Matrices and Arrays / Expressions Variables Declarations or dimension not required Variable names consist of a letter, followed by any number of letters, digits, or underscores Case sensitive. e.g., > num_students = 25 creates a 1-by-1 matrix named num_students and stores the value 25 in its single element Numbers Conventional decimal notation Scientific notation uses the letter ‘e’ to specify a power-of-ten scale factor Imaginary numbers use either i or j as a suffix (read more for rules on imag numbers) e-20 e23 1i j 3e5i

7 Introduction to Matlab
Getting Started / Matrices and Arrays / Expressions Operators (see also ‘help <any operator>’ for list – worth doing once to see) + Addition-Subtraction * Multiplication / Division \ Left division (described in Linear Algebra in MATLAB documentation) ^ Power ‘ Complex conjugate transpose ( ) Specify evaluation order Functions standard elementary math functions (abs, sqrt, exp, sin) special functions for useful constants pi i,j Imaginary unit, Inf Infinity (e.g., 1/0) nan Not-a-number (e.g., 0/0, inf/inf, 0*inf)

8 Introduction to Matlab
Getting Started / Matrices and Arrays / Expressions Examples of Matlab Expressions > rho = (1+sqrt(5))/2 rho = > a = abs(3+4i) a = 5 > z = sqrt(besselk(4/3,rho-i)) z = i

9 Introduction to Matlab
Getting Started / Matrices and Arrays / Matrices and Magic Squares Entering Matrices > A = [ ; ; ; ] A = Sum, transpose, and diag > sum(A) ans = > A’ ans = (Note: may use space or comma for elements of same row)

10 Introduction to Matlab
Getting Started / Matrices and Arrays / Matrices and Magic Squares Sum, transpose, and diag (cont’d) > sum(diag(A)) ans = 34 > sum(diag(fliplr(A))) > sum(A')’ ans = 34 > diag(A) 16 10 7 1

11 Introduction to Matlab
Getting Started / Matrices and Arrays / Matrices and Magic Squares Subscripts The element in row i and column j of A is denoted by A(i,j). For example, A(4,2) is the number in the fourth row and second column. It is also possible to refer to the elements of a matrix with a single subscript, A(k). If you try to use the value of an element outside of the matrix, it is an error: > t = A(4,5) ??? Index exceeds matrix dimensions. If you store a value in an element outside of the matrix, the size increases to accommodate the newcomer: > X = A; > X(4,5) = 17 X =

12 Introduction to Matlab
Getting Started / Matrices and Arrays / Matrices and Magic Squares The Colon Operator One of most important Matlab operators - occurs in several different forms > 1:10 ans = To obtain non-unit spacing, specify an increment: > 100:-7:50 > 0:pi/4:pi

13 Introduction to Matlab
Getting Started / Matrices and Arrays / Matrices and Magic Squares The Colon Operator (cont’d) Subscript expressions involving colons refer to portions of a matrix: e.g., A(1:k,j) refers to the first k elements of the jth column of A. > sum(A(1:4,4)) % computes the sum of the fourth column. ans = 34 or > sum(A(:,end)) % keyword ‘end’ refers to last row or column

14 Introduction to Matlab
Useful Tidbits … Useful Tidbits ‘who’ and ‘whos’ - returns variable names, types, sizes <variable name> - displays variable help <function name / operator> - displays header of function lookfor <topic> - searches headers for keywords up, down, left, right arrows - to repeat/modify previous commands semicolon after command - suppresses output Anything +-*/ nan = nan

15 Introduction to Matlab
Getting Started / Matrices and Arrays / Working with Matrices Functions that generate basic matrices zeros % All zeros ones % All ones rand % Uniformly distributed random elements randn % Normally distributed random elements e.g., > Z = zeros(2,4) Z = > F = 5*ones(3,3) F = 5 5 5 > N = fix(10*rand(1,10)) N = > R = randn(4,4) R =

16 Introduction to Matlab
Getting Started / Matrices and Arrays / Working with Matrices Concatenation Joining smaller matrices to make bigger ones e.g., > B = [A A+32; A+48 A+16] B =

17 Introduction to Matlab
Getting Started / Matrices and Arrays / More about Matrices and Arrays Build a table of squares and powers of 2: e.g., > n = (0:9)'; > pows = [n n.^2 2.^n] pows =

18 Introduction to Matlab
Getting Started / Matrices and Arrays / Working with Matrices Deleting Rows and Columns Delete the second column of X, use e.g., > A (:,2) = [ ] A = Deleting a single element from a matrix A(1,2) = [ ] % results in an error Using a 1-d subscript deletes element(s) and reshapes remaining elements into a row vector > X=A X(2:2:10) = [ ] X =

19 Introduction to Matlab
Getting Started / Matrices and Arrays / Working with Matrices Zero out a portion of B: e.g., > B(1:2,2:3) = 0 B =

20 Introduction to Matlab
Getting Started / Matrices and Arrays / More about Matrices and Arrays Logical Subscripting Eliminate missing data e.g., > x = [ NaN ]; > x = x(isfinite(x)) x = > x = x(abs(x-mean(x)) <= 3*std(x)) x =

21 Introduction to Matlab
Getting Started / Matrices and Arrays / More about Matrices and Arrays The ‘find’ Function e.g., find indices of the primes in A: > k = find(isprime(A))' k = > A(k) ans = Note: lhs index in an assignment statement preserves matrix structure e.g., > A(k) = NaN A = 16 NaN NaN NaN NaN 10 NaN 8 9 6 NaN 12


Download ppt "Laboratory in Oceanography: Data and Methods"

Similar presentations


Ads by Google