You are on page 1of 48

MATLAB

Fundamentals


MATLAB
Matrix Laboratory



Problem-Solving Methodology
State the problem clearly
Describe the Input/Output (I/O)
Work the problem by hand
Algorithm - Numerical Method
Develop a MATLAB Solution
Debugging and Testing
Documentation
Why MATLAB?
Industry standard software application
Wealth of built-in functions and libraries
Toolboxes (add-on software modules) image and
signal processing, control systems design, fuzzy
logic, etc.
Has own structured programming language
Ease of application and testing (pre- and post-
processing without lots of programming and
formatting)
Platform independent
MATLAB
MATLAB is a numerical analysis system
Can write programs, but they are not
formally compiled
Should still use structured programming
Should still use comments
Comments are indicated by % at the
beginning of the line

Comments!!!
Program Documentation
You must include comments in the
computer programs you turn in --
otherwise we will have great difficulty
knowing what you are doing
For example, here is some cryptic
code without comment
for j=0:2
k=(2-j)*(1+3*j)/2
end
What does it do?
Put a comment in
% turns (0,1,2) into (1,2,0)
MATLAB Windows
Command Window
-- enter commands and data
-- print results
Graphics Window
-- display plots and graphs
Edit Window
-- create and modify m-files

Managing MATLAB Environment
who or whos -- See the current runtime environment
clear -- remove all variables from memory
clc -- clear the command window
clf -- clear the graphics window
save -- save the workspace environment
load -- restore workspace from a disk file
abort -- CTRL-C
help -- help command
Really good help command
MATLAB Syntax
No complicated rules
Perhaps the most important thing to
remember is semicolons (;) at the end of
a line to suppress output
Type more on to keep text from
leaving screen too fast
diary filename saves a text record of
session
diary off turns it off
MATLAB
MATLABs basic component is a Vector or
Matrix
Even single value variables (Scalars)
All operations are optimized for vector use
Loops run slower in MATLAB than in
Fortran (not a vector operation)
size command gives size of the matrix

Scalars, Vectors, Matrices
MATLAB treat variables as matrices
Matrix (m n) - a set of numbers arranged in
rows (m) and columns (n)
Scalar: 1 1 matrix
Row Vector: 1 n matrix
Column Vector: m 1 matrix
(
(
(




=
(
(
(

= =
= =
2 2 7 1 5 0
5 9 2 3 4 2
5 2 3 1

21 7
3 2
02 5
21 7 3 2 02 5 27 5
. .
. . D
.
.
.
' B C
. . . B . A
>> pi
ans =
3.1416

>> size(pi)
ans =
1 1

>> a=[1 2 3; 4 5 6]
a =
1 2 3
4 5 6

>> size(a)
ans =
2 3
a=
1416 3. pi =
6 5 4
3 2 1
a
Complex variables
MATLAB handles complex arithmetic automatically
No need to compute real and imaginary parts
separately
The unit imaginary number i = is preassigned 1

x=5+2*i
x =
5.0000 + 2.0000i
y=5*x+3
y =
28.0000 +10.0000i
x=3+5-0.2
x =
7.8000
y=3*x^2+5
y =
187.5200
z=x*sqrt(y)
z =
106.8116
A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
b=[3;2;5]
b =
3
2
5
C=A*b
C =
22
52
who

Your variables are:

A b y
C x z

whos
Name Size Bytes Class

A 2x3 48 double array
C 2x1 16 double array
b 3x1 24 double array
x 1x1 8 double array
y 1x1 8 double array
z 1x1 8 double array

save

Saving to: matlab.mat

save matrix1
MATLAB Example
default filename
filename matrix1
Data types
All numbers are double precision
Text is stored as arrays of characters
You dont have to declare the type of
data (defined when running)
MATLAB is case-sensitive!!!

Variable Names
Usually, the name is identified with the problem
Variable names may consist of up to 31 characters
Variable names may be alphabetic, digits, and the
underscore character ( _ )
Variable names must start with a letter
ABC, A1, C56, CVEN_302
day, year, iteration, max
time, velocity, distance, area, density, pressure
Time, TIME, time (case sensitive!!)
I nitializing Variables
Explicitly list the values
reads from a data file
uses the colon (:) operator
reads from the keyboard
A = [1; 3; 5; 10]; B = [1 3 5; -6 4 -1]
C = [2 3 5 1; 0 1 (continuation)
1 -2; 3 5 1 -3]
E = [A; 1; A]; F = [C(2,3); A]
Matrix Concatenation
4 9 7 y ; 3 2 1 x = =
4 9 7 3 2 1 y x z = =
3 2 1 4 9 7
4 9 7 3 2 1 x y ; y x v = =
4 9 7
3 2 1 y ; x u = =
(
(
(
(

=
(
(
(
(

=
4 1
1 2
1 0
5 2
F
4 1 0
1 2 3
1 0 1
5 2 1
C
Colon Operator
Creating new matrices from an existing matrix
C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]
F = C(:, 2:3) = [2,5; 0,1; 2,-1; 1,4]
(

=
(
(
(
(

=
1 2 3
1 0 1
E
4 1 0
1 2 3
1 0 1
5 2 1
C
Colon Operator
Creating new matrices from an existing matrix
C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]
E = C(2:3,:) = [-1 0 1; 3 2 -1]
Colon Operator
Creating new matrices from an existing matrix
C = [1,2,5; -1,0,1; 3,2,-1; 0,1,4]
G = C(3:4,1:2) = [3,2; 0,1]
(

=
(
(
(
(

=
1 0
2 3
G
4 1 0
1 2 3
1 0 1
5 2 1
C
Colon Operator
Variable_name = a:step:b
time = 0.0:0.5:2.5
time = [0.0, 0.5, 1.0, 1.5, 2.0, 2.5]

Negative increment
values = 10:-1:2
values = [10, 9, 8, 7, 6, 5, 4, 3, 2]

linspace Function
linspace(x1, x2) gives 100 evenly spaced values
between x1 and x2
x = linspace(x1,x2)
linspace(a,b,n) generate n equally spaced points
between a and b
x = linspace(a,b,n)
linspace(0,2,11)
ans =
Columns 1 through 7
0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000
Columns 8 through 11
1.4000 1.6000 1.8000 2.0000
logspace Function
logspace(a,b,n) generates a logarithmically
equally spaced row vector
x = logspace(a,b,n)
logspace(a,b) generates 50 logarithmically
equally spaced points
x = logspace(a,b)
logspace(-4,2,7)
ans =
0.0001 0.0010 0.0100 0.1000 1.0000 10.0000 100.0000
Special Matrices
(

=
(
(
(

=
(
(
(

=
(
(
(

=
1 1 1 1
1 1 1 1
ones(2,4)
1 1 1
1 1 1
1 1 1
) 3 ( ones
0 0
0 0
0 0
zeros(3,2)
1 0 0
0 1 0
0 0 1
) 3 ( eye
b a b a b a
b a
a
b
b a
b a b a b a ab
a a
b a a
b
+ +
=


; n subtractio and Addition
\ \ division Left \
/ ; * ; division and tion Multiplica / *
Negation
^ tion Exponentia ^
Form MATLAB Operation Symbol
Scalar Arithmetic Operations
Example: x = (a + b*c)/d^2
count = count + 1
(Matrix inverse)
In order of priority
Order of Precedence of
Arithmetic Operations
1. Parentheses, starting with the innermost pair
2. Exponentiation, from left to right
3. Multiplication and division with equal precedence,
from left to right
4. Addition and subtraction with equal precedence,
from left to right
Examples: factor = 1 + b/v + c/v^2
slope = (y2 - y1)/(x2 - x1)
loss = f * length/dia * (1/2 * rho * v^2)
func = 1 + 0.5*(3*x^4 + (x + 2/x)^2)
Order of Precedence of
Arithmetic Operations
The priority order can be overridden with parentheses
y = -7.3^2
y =
-53.2900
y=(-7.3)^2
y =
53.2900

a=3; b=5; c=2;
s1 = a-b*c
s1 =
-7
s2=(a-b)*c
s2 =
-4
Exponentiation has higher
priority than negation
Multiplication has higher
priority than subtraction
Array Operations
An array operation is performed
element-by-element
B(5); * A(5) C(5)
B(4); * A(4) C(4)
B(3); * A(3) C(3)
B(2); * A(2) C(2)
B(1); * A(1) C(1)
=
=
=
=
=
MATLAB: C = A.*B;
] , [ ] ^ , ^ [ ] , [ ].^ , [
] , [ ] ^ , ^ [ ] , [ .^
] , [ ] ^ , ^ [ ].^ , [ .^ tion exponentia Array .^
] . , . [ ] \ , \ [ ] , [ \ ]. , [ division left Array \ .
] . , . [ ] / , / [ ] , /[ ]. , [ division right Array ./
] , [ ] , [ * ]. , [ tion multiplica Array * .
] , [ ] , [ ] , [ n subtractio Array -
] , [ ] , [ ] , [ addition Array
] , [ ] , [ n subtractio array - Scalar -
] , [ ] , [ addition array - Scalar
Example Form Operation Symbol
81 25 4 3 2 5 4 2 3 5
243 9 5 3 2 3 5 2 3
8 64 3 2 3 4 3 2 4 B A
7143 0 667 2 5 7 8 3 5 8 7 3 A.\B
400 1 375 0 5 7 8 3 5 8 7 3 A./B
18 6 3 2 6 3 A.*B
3 4 3 8 6 4 B A
9 12 3 8 6 4 B A
3 2 6 3 8 b A
9 7 3 6 4 b A
= =
= =
= =
= =
= =
=
=
= + + +
=
= + + +
Element-by-Element Operations
But a*b gives an error (undefined) because
dimensions are incorrect. Need to use .*
Vector and Matrix operations
(
(
(

= +
(
(
(

=
(
(
(

=
11
7
3
b a
6
4
2
b
5
3
1
a
(
(
(

=
(
(
(

=
30
12
2
6 * 5
4 * 3
2 * 1
b .* a
Vectorized Matrix Operations
9 243 81 3 B ).^ 3 ( F
1 512 27 8 3 .^ A E
5 . 0 6 . 1 75 . 0 2 B / . A D
2 40 12 2 B .* A C
2 5 4 1 B
1 8 3 2 A
= =
= =
= =
= =
=
=
Array Operations for
m n Matrices
(
(
(

= =
5 10 5 15
20 15 10 5
20 15 10 5
5 .* A B
| |
(
(
(

= =
1 2 1 3
4 3 2 1
4 3 2 1
1 - 2 1 3 -4; : -1 : 1 - 4; : 1 A
(
(
(

= =
1 8 1 27
64 27 8 1
64 27 8 1
3 .^ A C
Matrix Transpose
| | | |
| |
| | 4 ) 2 ( 3 ) 1 )( 2 ( ) 3 )( 4 (
2 -
1
3
3 2 4 ' y * x
6 3 9
4 2 6
8 4 12
2 1 3
3
2
4
y '* x
2 -
1
3
y' ;
3
2
4
' x
2 1 3 y ; 3 2 4 x
= + + =
(
(
(

=
(
(
(



=
(
(
(

=
(
(
(

=
(
(
(

=
= =
Built-in Functions
All the standard operators +, , *, /, ^
Sqrt( ), abs( ), sin( ), cos( ), exp( ),
tanh( ), acos( ), log( ), log10( ), etc.
These operators are vectorized

(
(
(

=
(
(
(

=
(
(
(

=
exp(4)
exp(5)
exp(3)
exp(a) ;
sin(4)
sin(5)
sin(3)
) a sin( ;
4
5
3
a
Built-in Functions
Certain functions, such as exponential and square
root, have matrix definition also
Use help expm and help sqrtm for details
>> A = [1 3 5; 2 4 6; -3 2 -1]
A =
1 3 5
2 4 6
-3 2 -1
>> B = sqrt(A)
B =
1.0000 1.7321 2.2361
1.4142 2.0000 2.4495
0 + 1.7321i 1.4142 0 + 1.0000i
>> C = sqrtm(A)
C =
2.1045 + 0.0000i 0.1536 - 0.0000i 1.8023 + 0.0000i
1.7141 - 0.0000i 1.1473 + 0.0000i 1.7446 + 0.0000i
-2.0484 + 0.0000i 1.3874 + 0.0000i 0.5210 - 0.0000i
(element by element)
(C*C = A)
MATLAB Graphics
One of the best things about MATLAB is
interactive graphics
plot is the one you will be using most often
Many other 3D plotting functions -- plot3,
mesh, surfc, etc.
Use help plot for plotting options
To get a new figure, use figure
logarithmic plots available using semilogx,
semilogy and loglog
plot(x,y) defaults to a blue line
plot(x,y,ro) uses red circles
plot(x,y,m*) uses magenta asterisks
If you want to put two plots on the same
graph, use hold on
plot(a,b,r:) (red dotted line)
hold on
plot(a,c,ko) (black circles)
Plotting Commands
Free-Falling Bungee J umper
Use built-in functions sqrt & tanh
>> g = 9.81; m = 75.2; cd = 0.24;
>> t = 0:1:20
t =
Columns 1 through 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Columns 16 through 21
15 16 17 18 19 20
>> v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t)
v =
Columns 1 through 9
0 9.7089 18.8400 26.9454 33.7794 39.2956 43.5937 46.8514 49.2692
Columns 10 through 18
51.0358 52.3119 53.2262 53.8772 54.3389 54.6653 54.8956 55.0579 55.1720
Columns 19 through 21
55.2523 55.3087 55.3484
Plot the velocity versus time curve
>> plot(t,v); grid on
>> title('Free Falling Bungee Jumper')
>> xlabel('time t (second)'); ylabel('velocity v (m/s)')
>> print djpeg bungee.jpg
How to change line thickness,
line color, font size, symbols,
marker size, etc.?
Color, Symbols, and Line Types
Use help plot to find available Specifiers

b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
Colors Symbols Line Types
x=0:0.1:5;
y=2*x.^3-12*x.^2+8*x-6;
H=plot(x,y,'b',x,y,'r*');
set(H,'LineWidth',3,'MarkerSize',12)
xlabel('x'); ylabel('y');
title('f(x)=2x^3-12x^2+8x-6');
print -djpeg075 poly.jpg
element-by-element
operations x.^n
Adjust line thickness,
font size, marker size, etc.
x=0:0.1:10;
y=sin(2.*pi*x)+cos(pi*x);
H1=plot(x,y,'m'); set(H1,'LineWidth',3); hold on;
H2=plot(x,y,'bO'); set(H2,'LineWidth',3,'MarkerSize',10); hold off;
xlabel('x'); ylabel('y');
title('y = sin(2\pix)+cos(\pix)');
print -djpeg075 function.jpg
x=0:0.1:3; y1=exp(-x); y2=sqrt(x);
H=plot(x,y1,'b-',x,y2,'r--');
set(H,'LineWidth',3)
xlabel('x'); ylabel('y'); title('MATLAB Plots');
H1=text(1.8,0.2,'exp(-x)'); set(H1,'FontSize',18);
H2=text(1.8,1.3,'sqrt(x)'); set(H2,'FontSize',18);
plot (x, y) plot(x1, y1, x2, y2)
plot (x, y, color symbol line style)
x = linspace(0, 2*pi);
y = sin (2.*x);
z = cos (0.5*x);
plot (x, y)
plot (x, y, x, z)
figure (2)
plot (x, y, 'r o -'); grid on
hold on
plot (x, z, 'b * :')
(red, circle, solid line)
(blue, star, dotted line)
figure or figure (#) : open a figure
Plotting Commands
xlabel ('Time')
ylabel ('Temperature')
title ('Temperature Record : 1900 - 2000')
text (17, 120, 'Record High' )
text (85, -40, 'Record Low' )
axis ([0 100 -50 140])
hold off
xlabel (' label ') ylabel (' label ')
title (' title of the plot ')
text ( x_location, y_location, ' text ' )
axis ( [ x_min x_max y_min y_max ] )
' ' - text string
Graphics Commands
Axis, Labels, and Title
CVEN 302-502

Homework No. 1
Chapter 2
Problems 2.2 (15), 2.4 (15), 2.7 (20),
2.10 (20), 2.11 (20).

Due Friday. 09/07/2007 at the
beginning of the period

You might also like