MATLAB Review

advertisement
Chapter 2
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 postprocessing 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
Program Documentation
Comments!!!

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

MATLAB’s 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
A  5.27
B  5.02  2.3 7.21
 5.02
C  B'    2.3
 7.21
1
3 2
5

D    2
4 3.2 9.5
  0.5  1 7.2  2
>> pi
ans =
3.1416
>> size(pi)
ans =
1 1
pi  3.1416
>> a=[1 2 3; 4 5 6]
a=
1 2 3
4 5 6
>> size(a)
ans =
2 3
1 2 3
a

4 5 6
a=
Complex variables



MATLAB handles complex arithmetic automatically
No need to compute real and imaginary parts
separately
The unit imaginary number i =  1 is preassigned
» x=5+2*i
x =
5.0000 + 2.0000i
» y=5*x+3
y =
28.0000 +10.0000i
MATLAB Example
» 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
C
b
x
» whos
Name
A
C
b
x
y
z
y
z
Size
2x3
2x1
3x1
1x1
1x1
1x1
Bytes
48
16
24
8
8
8
Class
double
double
double
double
double
double
array
array
array
array
array
array
» save
Saving to: matlab.mat
default filename
» save matrix1
filename “matrix1”
Data types

All numbers are double precision

Text is stored as arrays of characters


You don’t 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!!)
Initializing Variables




Explicitly list the values
reads from a data file
uses the colon (:) operator
reads from the keyboard
A = [1; 3; 5; 10];
C = [2 3 5 1; 0 1 …
B = [1 3 5; -6 4 -1]
(continuation)
1 -2; 3 5 1 -3]
E = [A; 1; A];
F = [C(2,3); A]
Matrix Concatenation
x  1 2 3 ;
z  x
y  7 9 4
y  1 2 3 7 9 4
u  x ; y   1 2 3
7
9 4
v  x y ; y x   1 2 3 7 9 4
7 9 4 1 2 3
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
 1
C
 3

 0
5

0
1
2  1

1
4
2
5
2
0

1

F
 2  1


4
1
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]
 1
 1
C
 3

 0
5

0
1
2  1

1
4
2
1
 1 0
E

 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
 1
C
 3

 0
5

0
1
2  1

1
4
2
3 2
G

0 1
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
1.8000
2.0000
Columns 8 through 11
1.4000
1.6000
0.8000
1.0000
1.2000
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 0 0


eye( 3)  0 1 0
0 0 1
 0 0


zeros(3,2)  0 0
0 0
1 1 1


ones( 3)  1 1 1
1 1 1
1 1 1 1
ones(2,4)  

1 1 1 1
Scalar Arithmetic Operations
 In order of priority
Symbol
Operation
MATLAB Form
^
Exponentia tion a b
a^ b

Negation  a
a
Multiplica tion and division ab; a  b
b
(Matrix inverse)
Left division a \ b 
a
Addition and subtractio n a  b
a * b; a / b
* /
\

Example: x = (a + b*c)/d^2
count = count + 1
a\b
a  b; a  b
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
» a=3; b=5; c=2;
» y = -7.3^2
» s1 = a-b*c
y =
s1 =
-7
» s2=(a-b)*c
s2 =
-53.2900
» y=(-7.3)^2
y =
53.2900
-4
Multiplication has higher
priority than subtraction
Exponentiation has higher
priority than negation
Array Operations

An array operation is performed
element-by-element
C(1)  A(1) * B(1);
C(2)  A(2) * B(2);
C(3)  A(3) * B(3);
C(4)  A(4) * B(4);
C(5)  A(5) * B(5);
MATLAB: C = A.*B;
Element-by-Element Operations
Symbol

Operation
Scalar - array addition
Form
Ab

Scalar - array subtractio n
Array addition
A  b [8 , 3 ]  6  [ 2 ,  3 ]
A  B [ 4 , 6 ]  [8, 3]  [12, 9]
.*
./
.\
.^
Array
Array
Array
Array
Array
A B
A.*B
A./B
A.\B
A.^ B
subtractio n
multiplica tion
right division
left division
exponentia tion
Example
[ 4 , 6 ]  3  [7 , 9]
[ 4 , 6 ]  [8 , 3 ]  [  4 , 3 ]
[ 3, 6 ]. * [ 2,  3]  [6 ,  18]
[ 3, 7 ]. /[ 8, 5 ]  [ 3 / 8 , 7 / 5 ]  [0.375 ,1.400 ]
[ 3, 7 ]. \ [8, 5 ]  [ 3 \ 8, 7 \ 5 ]  [ 2.667 ,0.7143]
[ 4 , 2].^ 3  [ 4^3, 2^3]  [64 , 8]
3.^ [ 2, 5 ]  [ 3^2, 3^5 ]  [9, 243]
[5 , 3].^ [ 2, 4 ]  [5^2, 3^4 ]  [ 25 , 81]
Vector and Matrix operations
 1
2
3






a   3
b  4 
a b  7 
5 
6 
11
But a*b gives an error (undefined) because
dimensions are incorrect. Need to use .*
1* 2   2 




a .* b   3 * 4    12 
5 * 6   30 
Vectorized Matrix Operations
A  2 3 8 1
B  1 4 5
2
C  A .* B  2 12 40
2
D  A . / B  2 0.75 1.6 0.5 
E  A .^ 3  8 27
512 1
F  ( 3 ).^ B  3 81 243 9 
Array Operations for
m  n Matrices
2
3
4
 1
A  1 : 4; - 1 : -1 : -4; 3 1 2 - 1   1  2  3  4 
 3
1
2  1
10
15
20 
 5


B  A.* 5    5  10  15  20 
 15
5
10  5 
8
27
64 
 1


C  A.^ 3    1  8  27  64 
 27
1
8  1
Matrix Transpose
x  4  2 3 ;
 4


x'    2 
 3
y  3 1  2 
 3


;
y'   1
 - 2 
4  8
 4
 12
x'* y    2  3 1  2     6  2
4 
 3 
 9
3  6 
 3
x * y'  4  2 3  1  ( 4 )( 3 )  ( 2 )( 1 )  3( 2 )  4
 - 2 
Built-in Functions



All the standard operators +, , *, /, ^
Sqrt( ), abs( ), sin( ), cos( ), exp( ),
tanh( ), acos( ), log( ), log10( ), etc.
These operators are vectorized
 3


a  5  ;
4 
 sin(3)
exp(3)




sin( a )   sin(5) ; exp(a)  exp(5)
 sin(4)
exp(4)
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)
(element by element)
B =
1.0000
1.7321
2.2361
1.4142
2.0000
2.4495
0 + 1.7321i
1.4142
0
>> C = sqrtm(A)
(C*C = A)
C =
2.1045 + 0.0000i
0.1536 - 0.0000i
1.8023
1.7141 - 0.0000i
1.1473 + 0.0000i
1.7446
-2.0484 + 0.0000i
1.3874 + 0.0000i
0.5210
+ 1.0000i
+ 0.0000i
+ 0.0000i
- 0.0000i
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
Plotting Commands
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:’)
hold on
plot(a,c,’ko’)
(red dotted line)
(black circles)
Free-Falling Bungee Jumper

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
18
19
20
6
7
8
9
10
11
12
13
14
Columns 16 through 21
15
16
17
>> 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
53.2262
53.8772
54.3389
54.6653
54.8956
55.0579
55.1720
Columns 10 through 18
51.0358
52.3119
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
Colors
Symbols
Line Types
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
»
»
»
»
»
»
»
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
Adjust line thickness,
font size, marker size, etc.
element-by-element
operations x.^n
»
»
»
»
»
»
»
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);
Plotting Commands
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 or figure (#) : open a figure
» figure (2)
» plot (x, y, 'r o -'); grid on (red, circle, solid line)
» hold on
(blue, star, dotted line)
» plot (x, z, 'b * :')
Graphics Commands

Axis, Labels, and Title
xlabel ( label ) ylabel ( label )
title ( title of the plot )
text ( x_location, y_location,  text  )
axis ( [ x_min x_max y_min y_max ] )
» xlabel (Time)
  - text string
» ylabel (Temperature)
» title (Temperature Record : 1900 - 2000)
» text (17, 120, Record High )
» text (85, -40, Record Low )
» axis ([0 100 -50 140])
» hold off
CVEN 302-501
Homework No. 1



Chapter 2
Problems 2.2 (15), 2.4 (15), 2.7 (20),
2.10 (20), 2.11 (20).
Due Friday. 09/05/2008 at the
beginning of the period
Download