chapter 2 matlab fundamentals. matlab matrix laboratory
Post on 21-Dec-2015
300 Views
Preview:
TRANSCRIPT
Chapter 2Chapter 2
MATLAB MATLAB FundamentalsFundamentals
MATLABMATLAB
MatMatrix rix LabLaboratoryoratory
Problem-Solving MethodologyProblem-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?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
MATLABMATLAB 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!!!Comments!!!
Program DocumentationProgram 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?What does it do?
Put a comment inPut a comment in
% turns (0,1,2) into (1,2,0)
MATLAB WindowsMATLAB Windows Command Window
-- enter commands and data
-- print results Graphics Window
-- display plots and graphs Edit Window
-- create and modify m-files
Managing MATLAB EnvironmentManaging 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 SyntaxMATLAB 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
MATLABMATLAB 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, MatricesScalars, 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
227150
592342
5231
217
32
025
21732025 275
..
..D
.
.
.
'BC
...B.A
>> pians = 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=14163.pi
654
321a
Complex variablesComplex variables MATLAB handles complex arithmetic automatically No need to compute real and imaginary parts
separately The unit imaginary number i = is preassigned1
» x=5+2*ix = 5.0000 + 2.0000i» y=5*x+3y = 28.0000 +10.0000i
» x=3+5-0.2x = 7.8000» y=3*x^2+5y = 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*bC = 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 ExampleMATLAB Example
default filename
filename “matrix1”
Data typesData 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!!!MATLAB is case-sensitive!!!
Variable NamesVariable 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!!)(case sensitive!!)
Initializing VariablesInitializing 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 ConcatenationMatrix Concatenation 497y ; 321x
497321yxz
321497
497321 xy ;y xv
497
321y ;x u
41
12
10
52
F
410
123
101
521
C
Colon OperatorColon 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]
123
101E
410
123
101
521
C
Colon OperatorColon 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 OperatorColon 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]
10
23G
410
123
101
521
C
Colon OperatorColon 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 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 Functionlogspace 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 MatricesSpecial Matrices
1111
1111ones(2,4)
111
111
111
)3(ones
00
00
00
zeros(3,2)
100
010
001
)3(eye
bababa
baa
bba
bababaab
aa
baab
; nsubtractio and Addition
\ \ division Left\
/ ;* ; division and tionMultiplica/ *
Negation
^ tionExponentia^
Form MATLABOperation Symbol
Scalar Arithmetic OperationsScalar Arithmetic Operations
Example: x = (a + b*c)/d^2
count = count + 1
(Matrix inverse)
In order of priority
Order of Precedence of Order of Precedence of Arithmetic OperationsArithmetic 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 Order of Precedence of Arithmetic OperationsArithmetic 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 OperationsArray 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;
] ,[]^ ,^[] ,[].^ ,[
] ,[]^ ,^[] ,[.^
] ,[]^ ,^[].^ ,[.^tionexponentia Array.^
].,.[]\ ,\[] ,[\]. ,[division left Array\.
].,.[]/ ,/[] ,/[]. ,[division right Array./
] ,[] ,[*]. ,[tionmultiplica Array*.
] ,[] ,[] ,[nsubtractio Array-
] ,[] ,[] ,[addition Array
] ,[] ,[nsubtractio array-Scalar-
] ,[] ,[addition array-Scalar
ExampleFormOperationSymbol
812543254235
24395323523
8643234324BA
71430667257835873A.\B
4001375057835873A./B
1863263A.*B
343864BA
9123864BA
32638bA
97364bA
Element-by-Element OperationsElement-by-Element Operations
But a*b gives an error (undefined) because dimensions are incorrect. Need to use .*
Vector and Matrix operationsVector and Matrix operations
11
7
3
ba
6
4
2
b
5
3
1
a
30
12
2
6*5
4*3
2*1
b.*a
Vectorized Matrix OperationsVectorized Matrix Operations
9243813B).^3(F
15122783.^AE
5.06.175.02B/.AD
240122B.*AC
2541B
1832A
Array Operations for Array Operations for m m n Matrices n Matrices
510515
2015105
2015105
5.*AB
1213
4321
4321
1 - 21 3-4;:-1:1 -4;:1A
18127
642781
642781
3.^AC
Matrix TransposeMatrix Transpose
4)2(3)1)(2()3)(4(
2-
1
3
324'y*x
639
426
8412
213
3
2
4
y'*x
2-
1
3
y' ;
3
2
4
'x
213y ; 324x
Built-in FunctionsBuilt-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)
)asin( ;
4
5
3
a
Built-in FunctionsBuilt-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 GraphicsMATLAB 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 onplot(a,c,’ko’) (black circles)
Plotting CommandsPlotting Commands
Free-Falling Bungee JumperFree-Falling Bungee Jumper Use built-in functions sqrt & tanh
>> g = 9.81; m = 75.2; cd = 0.24;
>> t = 0:1:20t =
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 TypesColor, 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 CommandsPlotting 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 CommandsGraphics Commands Axis, Labels, and Title
CVEN 302-501CVEN 302-501
Homework No. 1Homework 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 Due Friday. 09/05/2008 at the beginning of the periodbeginning of the period
top related