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