180 likes | 330 Views
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
E N D
Josh Xiaomin XiPhD CandidateFeb 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
Intro • MATLAB: MATrix and LABoratory • First developed by Dr. Cleve Molder: Fortran based • In 1984, MathWorks was founded: C based
Intro: Installation • Go to: http://ocio.osu.edu/software/directory/slwin/
Intro: Installation • Select the tool boxes that you need • e.g. Matlab, curve fitting, optimization, statistics, symbolic math, etc.
Intro: Matlab Windows Layout • Command Window • Command History • Current Directory Browser • Workspace Browser
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
Basics: Arithmetic Operations + plus - minus * multiply / right divide \ left divide ^ exponential 2+3=5 2-3= -1 2*3=6 2/3=0.6667 2\3=1.5000 2^3=8
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.
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()
Basics: Plot • An example of attenuation oscillation curve: 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
Basics: Functions • Use “sym” / “syms” • Use “inline” f=inline(‘3*sin(2*x^2-y)’) f=inline(‘3*sin(2*x^2-y)’,’x’,’y’) f(1,1) syms x y; f=3*sin(2*x^2-y) Df=diff(f) Df2=diff(f,2) subs(f,x,4) fin=inline(char(f)) fin(1,1)
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
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
Control Flow If condition1 expression(s) 1; else if condition2 expression(s) 2; else expression(s) 3; end If condition expression(s) 1; else expression(s) 2; end • If-Else If t >= 2 F = 40; else if t > 1 F = 30; else if t > 0 F = 20; else F = 10; end
Control Flow • For / while for i=1:5; for j=1:3 x(i , j)= i * j; end end x = 1 2 3 2 4 6 3 6 9 4 8 12 5 10 15 n=1; while prod ( 1 : n ) < 100; n=n+1; end n Result: n=5。 Because 5x4x3x2x1=120
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
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