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 et / 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
t0
0 t 1
1 t 2
t2
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