Tutorial Slides

advertisement
Josh Xiaomin Xi
PhD Candidate
Feb 27, 2013
A tutorial from
Overview
 Introduction
 Installation (Toolboxes)
 Layout of Matlab Windows
 Basics of Matlab language
 Arithmetic Operations
 Variables
 Matrix
 Plot
 Functions: inline and sym
 Programming in Matlab
 m-file
 Optimization in Matlab
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
2 / INF
Intro
 MATLAB: MATrix and LABoratory
 First developed by Dr. Cleve Molder: Fortran based
 In 1984, MathWorks was founded: C based
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
3 / INF
Intro: Installation
 Go to: http://ocio.osu.edu/software/directory/slwin/
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
4 / INF
Intro: Installation
 Select the tool boxes that you need
 e.g. Matlab, curve fitting, optimization, statistics, symbolic math, etc.
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
5 / INF
Intro: Matlab Windows Layout
 Command Window
 Command History
 Current Directory Browser
 Workspace Browser
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
6 / INF
Overview
 Introduction
 Installation (Toolboxes)
 Layout of Matlab Windows
 Basics of Matlab language
 Arithmetic Operation
 Variables
 Matrix
 Plot
 Functions: inline and sym
 Programming in Matlab
 m-file
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
7 / INF
Basics: Arithmetic Operations
+ plus
2+3=5
- minus
2-3= -1
*
multiply
2*3=6
/
right divide
2/3=0.6667
\
left divide
2\3=1.5000
^ exponential
A
INFORMS
Matlab Tutorial
OSU
2^3=8
Josh Xiaomin Xi
8 / INF
Basics: Variables
 How to define a variable name
 Numbers and letter, but first component must be a letter
 Case sensitive
 No space, punctuations (except underline)
 Special variables
 ans
 NaN, nan
 Inf, -Inf
 pi
 i, j
 realmax, realmin
 However, you can redefine these variables, and use “clear”
to clear redefinition.
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
9 / INF
Basics: Matrix
 How to define a matrix/vector
 A = [1 2 3 4; 4 5 6 7] ~~ [1:4; 4:7] (!!! Comma, colon, semicolon bracket)
 Special matrix
 zeros(m,n)
 ones(m,n)
 diag(vec)
 Matrix operation
 Basic arithmetic operation (!!! Period & dimensions)
 Inverse (inv) and transpose (apostrophe)
 Read/change matrix component (!!! parenthesis)
 Stacking and breaking
 Size(), length(), eig()
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
10 / INF
Basics: Plot
 An example of attenuation oscillation curve:
y  et / 3 sin 3t , t [0, 4 ]
t=0:pi/50:4*pi;
y=exp(-t/3).*sin(3*t);
plot(t,y,'-r')
grid
 Use “help” to find more info of plot, e.g. linespec, legend, title, xlabel
 Other
loglog
log plot, taking log on both x & y
semilogx
log plot, taking log only on x
semilogy
log plot, taking log only on y
mesh
3-d plot
bar
bar chart
Subplot
one figure with sub figures
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
11 / INF
Basics: Functions
f  3sin(2x2  y)
 Use “sym” / “syms”
 Use “inline”
f=inline(‘3*sin(2*x^2-y)’)
syms x y;
f=3*sin(2*x^2-y)
f=inline(‘3*sin(2*x^2-y)’,’x’,’y’)
f(1,1)
Df=diff(f)
Df2=diff(f,2)
subs(f,x,4)
fin=inline(char(f))
fin(1,1)
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
12 / INF
Overview
 Introduction
 Installation (Toolboxes)
 Layout of Matlab Windows
 Basics of Matlab language
 Arithmetic Operation
 Variables
 Matrix
 Plot
 Functions
 Programming in Matlab
 m-file: run large program, build large function
 Control flow: if-else, while, for
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
13 / INF
M File
 Replace command window when running large code
 Easy management
 Can be reused in future
 Define functions / sub-sections
 Better structure
 Good for complicated programming/logic
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
14 / INF
Control Flow
If condition1
 If-Else
expression(s) 1;
If condition
else if condition2
expression(s) 1;
expression(s) 2;
else
else
expression(s) 2;
expression(s) 3;
end
end
10
20

F 
30
40
A
INFORMS
Matlab Tutorial
OSU
t0
0  t 1
1 t  2
t2
If t >= 2
F = 40;
else if t > 1
F = 30;
else if t > 0
F = 20;
else
F = 10;
end
Josh Xiaomin Xi
15 / INF
Control Flow
 For / while
for i=1:5;
x=
for j=1:3
1
2
3
4
5
x(i , j)= i * j;
end
end
2 3
4 6
6 9
8 12
10 15
n=1;
while prod ( 1 : n ) < 100;
n=n+1;
Result: n=5。
end
Because 5x4x3x2x1=120
n
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
16 / INF
Optimization In Matlab
 Common optimization functions
 linprog: linear programming
 Quadprog: quadratic programming
 fmincon: constrained non-linear minimization
 fminsearch, fminunc: unconstrained nonlinear minimization
 fsolve: non-linear system of equations solve
 lsqlin: linear least square with linear constraints
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
17 / INF
Optimization: linprog
 linprog: linear programming
Min f(x) = –5x1 –4x2 –6x3
s.t. x1 – x2 + x3 ≤ 20
3x1 + 2x2 + 4x3 ≤ 42
3x1 + 2x2 ≤ 30
0 ≤ x1, 0 ≤ x2, 0 ≤ x3.
http://www.mathworks.com/help/optim/ug/linprog.html
A
INFORMS
Matlab Tutorial
OSU
Josh Xiaomin Xi
18 / INF
Download