Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sundermeyer MAR 550 Spring 2013 1 Laboratory in Oceanography: Data and Methods MAR550, Spring 2013 Miles A. Sundermeyer Introduction to Matlab ® Programming.

Similar presentations


Presentation on theme: "Sundermeyer MAR 550 Spring 2013 1 Laboratory in Oceanography: Data and Methods MAR550, Spring 2013 Miles A. Sundermeyer Introduction to Matlab ® Programming."— Presentation transcript:

1 Sundermeyer MAR 550 Spring 2013 1 Laboratory in Oceanography: Data and Methods MAR550, Spring 2013 Miles A. Sundermeyer Introduction to Matlab ® Programming Software

2 Sundermeyer MAR 550 Spring 2013 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: http://www.mathworks.com http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.html Starting and quitting Matlab … Windows: double click the Matlab icon … Linux: run “matlab” on command line Type ‘exit’ to quit (works in either)

3 Sundermeyer MAR 550 Spring 2013 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 = [0 14 28 42 56 70]; stage = [0.6120 0.6470 0.5800 0.6290 0.6880 0.5830]; flow = [0.330 0.395 0.241 0.338 0.531 0.279]; % create plot plot(stage,flow,'b*') xlabel('stage(m)') ylabel('flow (m^3s)') title('Stage vs. Discharge Rating Curve') set(gca,'xlim',[0.56 0.7]) set(gca,'ylim',[0.2 0.6]) % 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 Sundermeyer MAR 550 Spring 2013 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.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.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.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.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

5 Sundermeyer MAR 550 Spring 2013 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 Sundermeyer MAR 550 Spring 2013 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.g., 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i

7 Sundermeyer MAR 550 Spring 2013 7 Operators (see also ‘help ’ 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 pi3.14159265... i,jImaginary unit, InfInfinity (e.g., 1/0) nanNot-a-number (e.g., 0/0, inf/inf, 0*inf) Introduction to Matlab Getting Started / Matrices and Arrays / Expressions

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

9 Sundermeyer MAR 550 Spring 2013 9 Entering Matrices > A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A = 163213 510118 9 6 7 12 4 15 14 1 Sum, transpose, and diag > sum(A) ans = 34 34 34 34 > A’ ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 Introduction to Matlab Getting Started / Matrices and Arrays / Matrices and Magic Squares (Note: may use space or comma for elements of same row)

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

11 Sundermeyer MAR 550 Spring 2013 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 = 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17

12 Sundermeyer MAR 550 Spring 2013 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 = 1 2 3 4 5 6 7 8 9 10 To obtain non-unit spacing, specify an increment: >100:-7:50 ans = 100 93 86 79 72 65 58 51 >0:pi/4:pi ans = 0 0.7854 1.5708 2.3562 3.1416

13 Sundermeyer MAR 550 Spring 2013 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 j th 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 ans = 34

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

15 Sundermeyer MAR 550 Spring 2013 15 Introduction to Matlab Getting Started / Matrices and Arrays / Working with Matrices Functions that generate basic matrices zeros(n,m) % [n x m] matrix of zeros ones(n,m)% [n x m] matrix of ones rand(n,m)% [n x m] matrix of uniformly distributed random elements randn(n,m)% [n x m] matrix of normally distributed random elements e.g., > Z = zeros(2,4) Z = 0 0 > F = 5*ones(3,3) F = 5 5 5 > N = fix(10*rand(1,10)) N = 9 2 6 4 8 7 4 0 8 4 > R = randn(4,4) R = 0.6353 0.0860 -0.3210 -1.2316 -0.6014 -2.0046 1.2366 1.0556 0.5512 -0.4931 -0.6313 -0.1132 -1.0998 0.4620 -2.3252 0.3792

16 Sundermeyer MAR 550 Spring 2013 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 = 16 3213 48 35 34 45 5 10 11 8 37 42 43 40 9 6 7 12 41 38 39 44 4 15 14 1 36 47 46 33 64 51 50 61 32 19 18 29 53 58 59 56 21 26 27 24 57 54 55 60 25 22 23 28 52 63 62 49 20 31 30 17

17 Sundermeyer MAR 550 Spring 2013 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 = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32 6 36 64 7 49 128 8 64 256 9 81 512

18 Sundermeyer MAR 550 Spring 2013 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 =16 2 13 5 11 8 9 7 12 4 14 1 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 e.g., > X=A X(2:2:10) = [ ] X = 16 9 2 7 13 12 1

19 Sundermeyer MAR 550 Spring 2013 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 = 7.5 0 0 4.5 -3.5 0 0 -0.5 0.5 -2.5 -1.5 3.5 -4.5 6.5 5.5 -7.5

20 Sundermeyer MAR 550 Spring 2013 20 Introduction to Matlab Getting Started / Matrices and Arrays / More about Matrices and Arrays Logical Subscripting Eliminate missing data e.g., > x = [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8]; > x = x(isfinite(x)) x = 2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8 e.g., > x = x(abs(x-mean(x)) <= 3*std(x)) x = 2.1 1.7 1.6 1.5 1.9 1.8 1.5 1.8 1.4 2.2 1.6 1.8

21 Sundermeyer MAR 550 Spring 2013 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 = 2 5 9 10 11 13 > A(k) ans = 5 3 2 11 7 13 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 4 15 14 1


Download ppt "Sundermeyer MAR 550 Spring 2013 1 Laboratory in Oceanography: Data and Methods MAR550, Spring 2013 Miles A. Sundermeyer Introduction to Matlab ® Programming."

Similar presentations


Ads by Google