programming in matlab me 303. outline of lecture what is matlab? windows? data types –arrays:...

48
Programming in MATLAB ME 303

Upload: jordan-stone

Post on 26-Dec-2015

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Programming in MATLAB

ME 303

Page 2: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Outline of Lecture

• What is Matlab? Windows?• Data Types

– arrays: char, numeric, struct, cell

• Operators – arithmetic, relational, logical

• Flow Control– conditionals, case, while, etc.

• M-functions– syntax– examples of simple functions– writing and debugging a simple MATLAB function

Page 3: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

What is Matlab ?

• MATLAB® is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation.

• MATLAB is an interactive system whose basic data element is an array that does not require dimensioning. This allows you to solve many technical computing problems, especially those with matrix and vector formulations, in a fraction of the time it would take to write a program in a scalar noninteractive language such as C or Fortran. So where other programming languages work with numbers one at a time, MATLAB allows you to work with entire matrices quickly and easily.

FORTRAN:FORTRAN:    real*8 A(10,10), B(10,10), C(10,10) real*8 A(10,10), B(10,10), C(10,10)

   do i=1,10    do i=1,10    do j=1,10    do j=1,10        C(i,j) = A(i,j) + B(i,j)        C(i,j) = A(i,j) + B(i,j) 10 continue 10 continue 20 continue 20 continue

MATLABMATLAB: : C = A + BC = A + B

• The name MATLAB stands for matrix laboratory.

Page 4: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• A software environment for interactive (No need to declare variables) numerical computations

• >> 2+3*4/2 • >> a=5e-3; b=1; a+b

• Examples:– Matrix computations and linear algebra– Solving nonlinear equations– Numerical solution of differential equations– Mathematical optimization– Statistics and data analysis– Signal processing– Modelling of dynamical systems– Solving partial differential equations– Simulation of engineering systems

What is Matlab ?

Page 5: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,
Page 6: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

M-file editor/debugger window

Page 7: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Getting Help

To get help:

MATLAB main menu

-> Help

-> MATLAB Help

Page 8: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• Type one of the following commands in the command window:– help – lists all the help topics– help topic – provides help for the specified topic– help command – provides help for the specified

command– helpwin – opens a separate help window for

navigation– Lookfor keyword – search all M-files for keyword

• Online resource(http://www.mathworks.com)• >> demo in matlab

Getting Help

Page 9: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Variables

• Variable names:– Must start with a letter.– May contain only letters, digits, and the underscore

“_”.– MATLAB is case sensitive, for example one & ONE are

different variables. – MATLAB only recognizes the first 31 characters in a

variable name.

• Assignment statement:– Variable = number;– Variable = expression;

• Example: >> t = 1234;– >> t = 1234– t =– 1234

Page 10: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Variables

• Special variables:– ans: default variable name for the result.– pi: π = 3.1415926 ……– eps: ε= 2.2204e-016, smallest value by which two

numbers can differ– inf: ∞, infinity – NAN or nan: not-a-number

• Commands involving variables:– who: lists the names of the defined variables– whos: lists the names and sizes of defined variables– clear: clears all variables– clear name: clears the variable name– clc: clears the command window– clf: clears the current figure and the graph window

Page 11: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Arrays• A row vector in MATLAB can be created by an explicit list,

starting with a left bracket, entering the values separated by spaces (or commas) and closing the vector with a right bracket.

• A column vector can be created the same way, and the rows are separated by semicolons.

• Example:– >> x = [ 0 0.25*pi 0.5*pi 0.75*pi pi]– x = x is a row vector.– 0 0.7854 1.5708 2.3562 3.1416 – y=[0; 0.25*pi; 0.5*pi; 0.75*pi; pi]

– y = y is a column vector.– 0– 0.7854– 1.5708– 2.3562– 3.1416

Page 12: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• Vector Addressing- A vector element is addressed in MATLAB with an integer index enclosed in parentheses.

• Example:– >> x(3)– ans =– 1.5708 <- 3rd element of vector X

• The colon notation may be used to address a block of elements

• (start:increment:end)• Example:

– >> x(1:2:5)– ans =– 0 1.5708 3.1416

Arrays

Page 13: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• Some useful commands:

x = start:endCreate row vector x starting with start, counting by 1 , ending at end

x = start:increment:endCreate row vector x starting with start, counting by increment, ending at or before end

x = linspace(start,end,number)Create linearly spaced row vector x starting with start, ending at end, having number elements

x = logspace(start,end,number)Create logarithmically spaced row vector x starting with start, ending with end, having number elements

length(x) Returns the length of vector x

y = x’ Transpose of vector x

dot(x,y),cross(x,y)Returns the scalar dot and vector cross product of the vector x and y

Arrays

Page 14: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Matrices

• A matrix– rectangular array of numbers– 1-by-1 matrices, which are scalars, and – to matrices with only one row or column, which are

vectors.– It begins with [, and end with ]– Spaces or commas are used to separate elements in a row– Semicolon or enter is used to separate rows

• A = [1,2,3;4,-5,6;5,-6,7]

• MATLAB has other ways of storing both numeric and nonnumeric data, but in the beginning, it is usually best to think of everything as a matrix.

Page 15: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Matrices

Indexing Matrices

•Indexing using parentheses•>> A(2,3)

•Index submatrices using vectorsof row and column indices •>> A([2 3],[1 2])

•Ordering of indices is important!•>> B=A([3 2],[2 1])•>> B=[A(3,2),A(3,1);A(2,2);A(2,1)]

Page 16: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Indexing Matrices•Index complete row or column using the colon operator •>> A(1,:)

•Can also add limit index range•>> A(1:2,:)•>> A([1 2],:)

•General notation for colon operator•>> v=1:5•>> w=1:2:5

Matrices

Page 17: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• Element-by-Element Array-Array Mathematics

• Example:• >> x = [1 2 3];

• >> y = [4 5 6];

• >> z = x .* y

• z =

• 4 10 18

operation Algebraic Form MATLAB

Addition a + b a + b

Subtraction a – b a – b

Multiplication a x b a .* b

Division a / b a ./ b

Exponentiation ab a .^ b

Matrices

Page 18: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Matrices

zeros(n) Returns a n X n matrix of zeros

zeros(m,n) Returns a m X n matrix of zeros

ones(n) Returns a n X n matrix of ones

ones(m,n) Returns a m X n matrix of ones

size(A)For a m X n matrix A, returns the row vector [m,n] containing the number of rows and columns in matrix

length(A) Returns the larger of the number of rows or columns in A

Transpose B=A’

Identity Matrixeye(n) -> returns an n X n identity matrix

eye(m,n) -> returns an m X n matrix with ones on the main diagonal and zeros elsewhere

Addition and Subtraction C =A +B C =A - B

Scalar Multiplication B = α A, where α is a scalar

Matrix Multiplication C = A * B

Matrix Inverse B = inv(A), A must be a square matrix in this case

Matrix powers B = A * A , A must be a square matrix

Determinant det(A), A must be a square matrix

Page 19: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Expressions

Numbers

3 -99 0.00019.6397238 1.60210e-20 6.02252e231i -3.14159j 3e5i

• All numbers are stored internally using the long format. • 16 significant decimal digits and• a finite range of roughly 10-308 to 10+308.

Variables

S=5, Ali=6, a=4 A=3 a=?

Functions

Help elfunHelp specfunHelp elmat

Variables are stored in the workspace who – list current variables whos – detailed list of variables clear – removes all variables from the workspace

Page 20: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Data Types in MATLAB

Page 21: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Data Types in MATLAB

Page 22: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Uint8 and Doubles(Numeric)

• Double– almost all MATLAB

functions • expect doubles as

arguments• return doubles• e.g.,

• need to convert uint8 todouble before performingany math operations

» a = 1:10a =1 2 3 4 5 6 7 8 9 10» b = uint8(a)b = 1 2 3 4 5 6 7 8 9 10» whos Name Size Bytes Class

a 1x10 80 double array b 1x10 10 uint8 array

» b*2??? Error using ==> *Function '*' not defined for variables of class 'uint8'.

» (double(b))*2

ans =

2 4 6 8 10 12 14 16 18 20

Page 23: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Char Data Type» c = ['hello'];» whos Name Size Bytes Class c 1x5 10 char arrayGrand total is 5 elements using 10 bytes

» c(1)ans =h

» d = [c,' again'];» dd =hello again» » b = ['hello';'again'];» size(b)ans = 2 5» bb =helloagain»

name = 'Thomas R. Lee';The class and ischar functions show name's identity as a character array: class(name)ans = char

ischar(name)ans = 1

Page 24: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Structure Data Type

image.name = 'Tom';» image.height = 3;

» image.width = 3;

» image.data = [8 10 2; 22 7 22; 2 4 7];

» whos Name Size Bytes Class

image 1x1 590 struct array

Grand total is 18 elements using 590 bytes

>> image.name = 'Tom'image = name: 'Tom'>> image.height = 3;>> image.height = 3image = name: 'Tom' height: 3>> image.data = [8 10 2; 22 7 22; 2 4 7]image = name: 'Tom' height: 3 data: [3x3 double]>> image.width = 3image = name: 'Tom' height: 3 data: [3x3 double] width: 3>> imageimage =

name: 'Tom' height: 3 data: [3x3 double] width: 3

Page 25: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• A cell array provides a storage mechanism for dissimilar kinds of data. You can store arrays of different types and/or sizes within the cells of a cell array. For example, you can store a 1-by-50 char array, a 7-by-13 double array, and a 1-by-1 uint32 in cells of the same cell array.

• To access data in a cell array, you use the same matrix indexing as with other MATLAB matrices and arrays. However, with cell array indexing, you use curly braces, {}, instead of square brackets an parentheses around the array indices. For example, A{2,5} accesses the cell in row 2 and column 5 of cell array A.

Cell Arrays Data Type

Page 26: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Operators

• Arithmetic– numeric computations, e.g., 2^10

• Relational– quantitative comparison of operands– e.g., a < b

• Logical– AND, OR, NOT– return Boolean variable, 1 (TRUE) or 0 (FALSE)

Page 27: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Arithmetic Operators

• Transpose, a’• Power, a^2• Addition, multiplication, division

– a(1)*b(2)– a*b

• works if a and b are matriceswith appropriate dimensions(columns(a) = rows(b))

– a.*b (element by element)

• except for matrix operations, mostoperands must be of the same size,unless one is a scalar

Page 28: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Arithmetic Operators

• Transpose, a’• Power, a^2• Addition, multiplication, division

– a(1)*b(2)– a*b

• works if a and b are matriceswith appropriate dimensions(columns(a) = rows(b))

– a.*b (element by element)

• except for matrix operations, operands must be of the same size,unless one is a scalar

» a = [2 3];» b = [4 5];» a(1)*b(2)ans = 10

» a*b??? Error using ==> *Inner matrix dimensions must agree.

» a*b'ans = 23

» a.*bans =

8 15

» b/2ans = 2.0000 2.5000

Page 29: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Relational Operators

• <, <=, >, >=, ==, ~=

• compare corresponding elementsof arrays with same dimensions

• if one is scalar, one is not, the scalaris compared with each element

• result is element by element, 1 or 0

Page 30: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Relational Operators

• <, <=, >, >=, ==, ~=

• compare corresponding elementsof arrays with same dimensions

• if one is scalar, one is not, the scalaris compared with each element

• result is element by element 1 or 0

» aa = 2 3

» bb = 4 5

» a > bans = 0 0

» b > aans = 1 1

» a > 2ans = 0 1

Page 31: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Logical Operators

• Logical operators (combinations of relational operators)

• & (and)| (or)~ (not)

• Logical functionsxorisemptyanyall

Page 32: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Flow Control

• If– if

logical_expression– statements– End

if (beta(1)==0)&(alpha(1)~=0) K(1,1)=K(1,1)-(ko*beta(1)/alpha(1)); F(1)=F(1)-(ko*gama(1)/alpha(1)); end•Else and elseif

•The else statement has no logical condition. The statements associated with it execute if the preceding if (and possibly elseif condition) is false (0).

•The elseif statement has a logical condition that it evaluates if the preceding if (and possibly elseif condition) is false (0). The statements associated with it execute if its logical condition is true (1). You can have multiple elseif statements within an if block.

if n < 0 % If n negative, display error message. disp('Input must be positive');elseif rem(n,2) == 0 % If n positive and even, divide by 2. A = n/2;else A = (n+1)/2; % If n positive and odd, increment and divide.end

Page 33: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Flow Control

• switch, case, and otherwise

switch expression (scalar or string) case value1 statements % Executes if expression

is value1 case value2 statements % Executes if expression

is value2 . . . otherwise statements % Executes if expression

does not % match any caseend

switch input_num case -1 disp('negative one'); case 0 disp('zero'); case 1 disp('positive one'); otherwise disp('other value');end

Page 34: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Flow Control

• Use the for statement to loop a specific number of times.• The while statement is more suitable for basing the loop

execution on how long a condition continues to be true or false.

• Forfor index =

start:increment:end statementsend

for m = 1:5 for n = 1:100 A(m, n) = 1/(m + n - 1); endend

• While while expression statements end

while prod(1:n) < 1e100 n = n + 1;end

Page 35: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• Continue• The continue statement passes control to the next

iteration of the for or while loop in which it appears, skipping any remaining statements in the body of the loop.

• In nested loops, continue passes control to the next iteration of the for or while loop enclosing it.

Flow Control

fid = fopen('magic.m', 'r');count = 0;while ~feof(fid) line = fgetl(fid); if isempty(line) | strncmp(line, '%', 1) continue end count = count + 1;enddisp(sprintf('%d lines', count));

Page 36: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Flow Control

• Break• The break statement terminates the execution of a

for loop or while loop. • When a break statement is encountered, execution

continues with the next statement outside of the loop. In nested loops, break exits from the innermost loop only

fid = fopen('fft.m', 'r');s = '';while ~feof(fid) line = fgetl(fid); if isempty(line) break end s = strvcat(s, line);enddisp(s)

Page 37: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

a=input('a=');b=input('b=');c=input(‘please neter the value…’);

input-outputuser_entry = input('prompt') displays prompt as a prompt on the screen, waits for input from the keyboard, and returns the value entered in user_entry.

user_entry = input('prompt','s') returns the entered string as a text variable rather than as a variable name or numerical value

reply = input('Do you want more? Y/N [Y]: ','s');if isempty(reply) reply = 'Y';end

count = fprintf(fid,format,A,...) formats the data in the real part of matrix A (and in any additional matrix arguments) under control of the specified format string, and writes it to the file associated with file identifier fid.

•Fid is 1 for standard output (the screen) or 2 for standard error.•The format argument is a string containing C language conversion specifications

Page 38: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

input-output

fprintf('A unit circle has circumference %g radians.\n',2*pi)

A unit circle has circumference 6.283186 radians.

B = [8.8 7.7; 8800 7700]fprintf(1,'X is %6.2f meters or %8.3f mm\n',9.9,9900,B)display the lines:

X is 9.90 meters or 9900.000 mmX is 8.80 meters or 8800.000 mmX is 7.70 meters or 7700.000 mm

Page 39: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

A,B,C

Δ<0 ?

Yes

No

A=0 ?

No solutionYes

No

X1=…..X2=…..

2

1

2

0

?

?

ax bx c

x

x

• clear• disp('This program is written... ')• fprintf('\n')• a=input('enter a=');• while a==0• disp('a ya sifirdan farkli bir

deger veriniz')• a=input('Please re-enter the

value of a=');• end• Delta=b^2-4*a*c;• if Delta<0• ‘No solution’• else• x1=(-b+sqrt(Delta))/(2*a);• x2=(-b-sqrt(Delta))/(2*a);• fprintf('First root=%5.5f \

nSecond root=%5.5f',x1,x2)• end

Page 40: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Plotting

• type help graph2d...• Plotting a point:

– >>plot (variablename, ‘symbol’)

• Example: Complex variable• >>z = 1 + 0.5j;• >>plot(z,‘*')• Commands for axes:

Command Description

axis([xmin xmax ymin ymax]) Define minimum and maximum values of the axes

axis square Produce a square plot

axis equal Equal scaling factors for both axes

axis normal Turn off axis square, equal

axis (auto) Return the axis to defaults

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-0.5

0

0.5

1

1.5

Page 41: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Plotting

• Plotting curves:– plot(x,y) – generate a linear plot of the values of x (horizontal axis)

and y (vertical axis)– semilogx(x,y) - generate a plot of the values of x (logarithmic scale)

and y (linear scale)– semilogy(x,y) -– loglog(x,y) - generate a plot of the values of x and y (both

logarithmic scale)

• Multiple curves– plot(x,y,w,z) – multiple curves can be plotted on the same graph: y

vs. x and z vs. w – legend(‘string1’,’string2’, …) – used to distinguish between plots

on the same graph

• Multiple figures– figure(n) – use in creation of multiple plot windows before the

command plot()– close – closes the figure n window– close all – closes all the plot windows

• Subplots:– subplot(m,n,p) – m by n grid of windows, with p specifying the

current plot as the pth window

Page 42: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Plotting

• Example: (polynomial function)– Plot the polynomial using linear/linear, log/linear, linear/log, log/log scale

• >>% generate te polynomial:• >>x=linspace(0,10,100);• >>y=2*x.^2+7*x+9;• >>% plotting the polynomial:• >>figure(1);• >>subplot(2,2,1),plot(x,y);• >>title('polynomial, linear/linear scale');• >>ylabel('y'),grid;• >>subplot(2,2,2),semilogx(x,y);• >>title('polynomial, log/linear scale');• >>ylabel('y'),grid;• >>subplot(2,2,3),semilogy(x,y);• >>title('polynomial, linear/log scale');• >>ylabel('y'),grid;• >>subplot(2,2,4),loglog(x,y);• >>title('polynomial, log/log scale');• >>ylabel('y'),grid;

972 2 xxy

0 5 100

100

200

300polynomial, linear/linear scale

y

10-1

100

101

0

100

200

300polynomial, log/linear scale

y

0 5 1010

0

101

102

103

polynomial, linear/log scale

y

10-1

100

101

100

101

102

103

polynomial, log/log scale

y

Page 43: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

Plotting

Adding new curves to the exsiting graph• Use the hold command to add lines/points to an

existing plot– hold on – retain existing axes, add new curves to

current axes.– hold off – release the current figure windows for

new plots

• Grids and labels:

Command Description

grid on Add dashed grids lines at the tick marks

grid off Removes grid lines (default)

Grid Toggles grid status (off to on or on to off)

title(‘text’) Labels top of plot with text

xlabel(‘text’) Labels horizontal (x) axis with text

ylabel(‘text’) Labels vertical (y) axis with text

text(x,y,’text’) Adds text to location (x,y) on the current axes, where (x,y) is in units from the current plot

Page 44: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

M-Files

• Before, we have executed the commands in the command window. The more general way is to create a M-file.

• The M-file is a text file that consists a group of MATLAB commands.

• MATLAB can open and execute the commands exactly as if they were entered at the MATLAB command window.

• To run the M-files, just type the file name in the command window. (make sure the current working directory is set correctly)

Page 45: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

User Defined Function

• Add the following command in the beginning of your m-file:

• function [output variables] = function_name (input variables);– Note: the function_name should be the same as your file

name to avoid confusion.

• Calling your function:– A user-defined function is called by the name of the m-file,

not the name given in the function definition.– Type in the m-file name like other pre-defined commands.

• Comments:– The first few lines should be comments, as they will be

displayed if help is requested for the function name. the first comment line is reference by the lookfor command.

Page 46: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

• Example ( circle1.m)• function y = circle1(center,radius,nop,style)• % circle1 draws a circle with center defined as a vector 'center'• % radius as a scalar 'radius'. 'nop' is the number of points on the circle• % 'style' is the style of the point.• % Example to use: circle1([1 3],4,500, ':');• [m,n] = size(center);• if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))• error('Input must be a vector')• end• close all• x0=center(1);• y0=center(2);• t0=2*pi/nop;• axis equal• axis([x0-radius-1 x0+radius+1 y0-radius-1 y0+radius+1])• hold on• for i=1:nop+1• pos1=radius*cos(t0*(i-1))+x0;• pos2=radius*sin(t0*(i-1))+y0;• plot(pos1,pos2,style);• end

User Defined Function

Page 47: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

User Defined Function

• In command window:– >> help circle1

– circle1 draws a circle with center defined as a vector 'center' radius as a scalar 'radius'. 'nop' is the number of points on the circle 'style' is the style of the point

– Example to use: circle1([1 3],4,500,':');

• Example: plot a circle with center (3,1), radius 5 using 500 points and style '--':

– >> circle1([3 1],5,500,'--');

• Result in the Figure window

Page 48: Programming in MATLAB ME 303. Outline of Lecture What is Matlab? Windows? Data Types –arrays: char, numeric, struct, cell Operators –arithmetic, relational,

References

• Matlab help

• www.mathworks.com

• 58:111 Numerical Calculations (Univ. Of Iowa)

• 2E1215 course of Mikael Johanson

• Matlab Workshop of Dr. Ali A. JalaliDr. Ali A. Jalali

• Hakan Çopur’s Introductory Matlab Hakan Çopur’s Introductory Matlab PresentationPresentation