megn 536 – computational biomechanics matlab: getting started prof. anthony j. petrella...

36
MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Upload: berniece-greene

Post on 12-Jan-2016

228 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

MEGN 536 – Computational Biomechanics

MATLAB: Getting Started

Prof. Anthony J. Petrella

Computational Biomechanics Group

Page 2: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

MATLAB Window

Command line

History

Workspace tab(active here)

Current directory contents

variables in workspace and their values

Page 3: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

MATLAB Help

To obtain help with any known MATLAB command just type…

>> help command_name

To search the help files just select MATLAB Help from the top level menu, hit the F1 key, or type…

>> doc

Page 4: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Symbol Operation MATLAB form

^ exponentiation: ab a^b

* multiplication: ab a*b

/ right division: a/b a/b

\ left division: b/a a\b

+ addition: a + b a + b

- subtraction: a - b a - b

Scalar Arithmetic Operations

Page 5: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Entering Commands and Expressions

MATLAB retains your previous keystrokes. Use the up-arrow key to scroll back back through the

commands. Press the key once to see the previous entry, and so

on. Use the down-arrow key to scroll forward. Edit a line

using the left- and right-arrow keys the Backspace key, and the Delete key.

Press the Enter key to execute the command.

Page 6: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Command Description

ans Temporary variable containing the most recent answer.

eps Specifies the accuracy of floating point precision.

i,j The imaginary unit -Ö 1.

Inf Infinity.

NaN Indicates an undefined numerical result.

pi The number p.

Special Variables and Constants

Page 7: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Precedence Operation

First Parentheses, evaluated starting with the innermost pair.

Second Exponentiation, evaluated from left to right.

Third Multiplication and division with equal precedence, evaluated from left to right.

Fourth Addition and subtraction with equal precedence, evaluated from left to right.

Order of Precedence

Page 8: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

>> 8 + 3*5ans = 23>> 8 + (3*5)ans = 23>>(8 + 3)*5ans = 55>>4^2 12 8/4*2ans = 0>>4^2 12 8/(4*2)ans = 3

Examples of Precedence

Page 9: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

>> 3*4^2 + 5ans = 53>>(3*4)^2 + 5ans = 149>>27^(1/3) + 32^(0.2)ans = 5>>27^(1/3) + 32^0.2ans = 5>>27^1/3 + 32^0.2ans = 11

Examples of Precedence (continued)

Page 10: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Command Description

clc Clears the Command window.

clear Removes all variables from memory.

clear v1 v2 Removes the variables v1 and v2 from memory.

exist(‘var’) Determines if a file or variable exists having the name ‘var’.

quit Stops MATLAB.

Commands for managing the work session

Page 11: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

who Lists the variables currently in memory.whos Lists the current variables and sizes,

and indicates if they have imaginary parts.

: Colon; generates an array having regularly spaced elements.

, Comma; separates elements of an array.

; Semicolon; suppresses screen printing; also denotes a new row in an array.

... Ellipsis; continues a line.

Commands for managing the work session (continued)

Command Description

Page 12: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Practice…

Find the circumference and area of a circleof radius = 2.5 mm

Find the surface area and volume of a sphereof radius 17.2 mm

Use help to learn the difference between the built-in MATLAB functions cos() and cosd()

Page 13: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Arrays…

Page 14: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

How to Create Arrays

You can use the colon (:) operator together with the comma and semicolon to create arrays

Colon – create a sequence of numbers in a row Comma – separate listed elements of a single row,

can also use an empty space Semicolon – separates rows

>> p = [1:3;4,5,6;7 8 9]p = 1 2 3 4 5 6 7 8 9

>> r = [5:5:35;35:-5:5]r = 5 10 15 20 25 30 35 35 30 25 20 15 10 5

Page 15: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Array Functions

You can find the size of an array with the size() function You can find the length of a vector with the length() function Read the help entries for each of these functions

>>p = [5:5:35;35:-5:5];>>size(p)ans =

2 7>>r = [4,5 6];>>length(r)ans =

3

Page 16: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Concatenation

You can easily create an array by concatenating two or more existing arrays

>> p = ones(3,1)p = 1 1 1>> q = zeros(3,1)q = 0 0 0

>> s = [p q q p]s = 1 0 0 1 1 0 0 1 1 0 0 1

Page 17: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Array Index You may refer to a single element of an array by using the array index

corresponding to the row and column where the number is located in the array

>>w = [5:5:35;35:-5:5]

ans = 5 10 15 20 25 30 3535 30 25 20 15 10 5

>>w(2,3)ans =

25

If the array is a vector, you need only specify the column number since there is only a single row and the row number is assumed to be 1

>>u = [6 7 8 9 0];>>u(2)ans =

7

Page 18: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Array Addressing You can refer to ranges of elements in an array by using the

standard index formatelements = array(rows,columns)

Example>>w = [2:2:10;10:-2:2];w =

2 4 6 8 10 10 8 6 4 2

>>w(1:2,3:4)ans =

6 86 4

try this >>w(:,5)

Page 19: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Array Addressing Other examples of how to address an arbitrary selection of rows

& columns from an array

>> r = [5:5:35;35:-5:5]r =

5 10 15 20 25 30 35 35 30 25 20 15 10 5

>> r(:,2:5)ans =

10 15 20 25 30 25 20 15

>> r(:,[2,5])ans =

10 25 30 15

Page 20: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Example – Linear Indexing What happens when a single index is used to address elements

of a matrix?

>> rr =

5 10 15 20 25 30 35 35 30 25 20 15 10 5

>> r(2)ans =

35

>> r(5)ans =

15

>> r([2 7 13])ans =

35 20 35

Page 21: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Assignment You can store the results of a calculation in a specified location

in an array

for i = 1:10,s(i,1) = sqrt(5*i);

end

>> s =

2.2361 3.1623 3.8730 4.4721 5.0000 5.4772 5.9161 6.3246 6.7082 7.0711

Note: the semicolon causesscreen output to be suppressed!

Only after the loop completes is the output specifically requested by typing the variable name

Page 22: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

More Advanced Topics: Scripts, User-Defined Functions, Conditionals, Loops, Files

Page 23: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

1. In the interactive mode, in which all commands are entered directly in the Command Window, or…

2. By running a MATLAB commands stored in a script file.

This type of file contains MATLAB commands, so running it is equivalent to typing all the commands—one at a time—at the Command Window prompt. You can run the file by typing its name at the command line.

You can execute commands in MATLAB in two ways:

Page 24: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

What happens when you type func_name()

1. MATLAB first checks to see if func_name() is a variable and if so, displays its value.

2. If not, MATLAB then checks to see if func_name() is one of its own commands, and executes it if it is.

3. If not, MATLAB then looks in the current directory for a file named func_name.m and executes func_name() if it finds it.

4. If not, MATLAB then searches the directories in its search path, in order, for func_name.m and then executes it if found.

Page 25: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

The MATLAB Script Editor / Debugger

comments

MATLABcommands

save & execute

Page 26: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Keep in mind when using script files:

The name of a script file must begin with a letter, and may include digits and the underscore character, up to 31 characters

Do not give a script file the same name as a variable

Do not give a script file the same name as a MATLAB command or function; you can check to see if a command, function or file name already exists by using the exist() command

Page 27: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

MATLAB User-Defined Functions

function [output variables] = function_name (input variables)

Note: [output variables] is NOT an array You may use multiple output variables separated by commas,

but each will be output individually Example:

Working Session>> [s,t] = two_out(3,5)s = 30.6000

t = 2.6471

Function Definition

function [p,q]=two_out(x,y)p = 17*x^2/y;q = y*x/17*x;

Page 28: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

MATLAB Plotting

>> x = [0:pi/10:2*pi];>> y = sin(x);>> plot(x,y,'g.-','MarkerSize',15,'LineWidth',2)>> title('Example Plot of y = sin(x)');>> xlabel('x (units)');>> ylabel('y = sin(x)')

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x (units)

y =

sin

(x)

Example Plot of y = sin(x)

Page 29: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Plot Layout with subplot()

>> x = [0:pi/10:2*pi];>> y1 = sin(x); y2 = cos(x);>> subplot(2,1,1)>> plot(x,y1,'g.-','MarkerSize',15,'LineWidth',2)>> xlabel('x (units)');>> ylabel('y_1 = sin(x)')>> subplot(2,1,2)>> plot(x,y2,'g.-','MarkerSize',15,'LineWidth',2)>> xlabel('x (units)');>> ylabel('y_2 = cos(x)')

0 1 2 3 4 5 6 7-1

-0.5

0

0.5

1

x (units)

y 1 = s

in(x

)

0 1 2 3 4 5 6 7-1

-0.5

0

0.5

1

x (units)

y 2 = c

os(x

)

Page 30: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Conditional Statements

if x < 3color = ‘r’;

elseif x < 7

color = ‘b’;else

if x < 11

color = ‘c’;else

color = ‘m’;end

endend

if x < 3color = ‘r’;

elseif x < 7color = ‘b’;

elseif x < 11color = ‘c’;

elsecolor = ‘m’;

end

Page 31: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

for Loops

Standard structure…for loop variable = min:inc:max

statementsend

Basic example…for k = 5:10:35x = k^2

end

k = 5, 15, 25, 35

x = 25, 225, 625, 1225

Note: if inc is not specified,it defaults to unity

Page 32: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Importing Data from a Text File

Using the load command…

>> load subject_data.dat;

>> s = load(‘subject_data.dat’);

Reads ASCII data in columns

Creates array named subject_data.dat

Reads ASCII data in columns

Creates array named s

Page 33: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Importing Data from a Text File (cont.)

Using the dlmread command…

>> RESULT = DLMREAD(FILENAME,DELIMITER,R,C);

Reads delimited ASCII data starting at row R and column C

Creates array named RESULT

Page 34: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Importing Data from an Excel File

[num,txt] = xlsread(‘excel_filename.xls’)

numeric data put into num variable text data put into txt variable

Page 35: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Saving Data to ASCII File

Using the save command…>> save filename var1 var2… –ASCII –tabs;

For example…

>> B = [2 6; 5 7; 8 4];>> save array_B.dat B –ASCII –tabs;

Saves array B in the ASCII file array_B.dat

Columns of B become tab-delimited columns of array_B.dat

Page 36: MEGN 536 – Computational Biomechanics MATLAB: Getting Started Prof. Anthony J. Petrella Computational Biomechanics Group

Saving Data to Binary File

Using the save command…>> save filename var1 var2…

For example…

>> B = [2 6; 5 7; 8 4];>> save array_B B

Saves array B in the binary file array_B.mat

Advantage: binary files load faster than ascii