Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Introduction to MATLAB and MATLAB Programming #1 Outline • Who are we and why are we here? (to paraphrase James Stockdale, 1992) • Who am I and how did I get here? • Who are you and why are you here? • MATLAB • Started programming (BASIC) in 1981 • Started imaging algorithm and software development (Pascal) in 1983 • Cambridge Instruments Quantimet 900 – 1 MB memory – Booted from 8” floppy disk – $100,000 • BCC ASET (1983), AA (1986) – BASIC, Pascal, FORTRAN, x86 Assembler • TSU BSEE (1986) • NCSU MSEE (1988) – MATLAB – C/C++ – APL, ProLog • NCSU PhD (1996) 3D ICUS • 3D Intracoronary Ultrasound • Lumen and medial-adventitial boundary estimation 3D Imaging Geometry xw y ~ X w zw 1 zw xw yw v u u ~ x v 1 C u v u ~ x v 1 C TIPS Surgical Planning MRA Vessel Extraction Objectives • Develop a basic working knowledge of MATLAB (notation, syntax, built-in functions) • Learn to use the command line (MATLAB as a calculator) • Learn to develop scripts and functions • Learn basic programming skills • Learn to use the debugger to troubleshoot scripts and functions Objectives • Generate 2D and 3D data plots • Read, write, and manipulate numeric data (e.g. text files, binary files, Excel) • Read, write, manipulate, and display image data • Learn the basics of linear algebra • Learn about the FFT and complex variables What is MATLAB? • MATLAB - Matrix Laboratory • What is a matrix? – Fundamental data type in MATLAB – An image • What is an image? – A rectangular array of numbers – A point in a high-dimensional space – A representation of a system of equations What is MATLAB? • What is a matrix? n m n m – A linear mapping from R to R (or C to C )** • What’s a linear mapping? • Lines map to lines. Origin maps to the origin. – A collection of vectors – What is a vector? » Magnitude and direction (velocity, force, etc.) » An n-tuple of numbers What is MATLAB? • History – Netlib (netlib.org) • Large software library written in FORTRAN (FORmula TRANslator) – Cleve Moler (EISPACK, LINPACK, cofounder of MathWorks) • Computing environment for technical computation, visualization, design, simulation, and implementation in a wide range of application areas. Common MATLAB Applications • Numerical Methods – Linear algebraic equations – Roots and optimization – Curve fitting – Integration and differentiation – Differential equations • MATLAB toolboxes – Statistics, optimization, image processing, computer vision, bioinformatics, … Why MATLAB? • Pros: – Easy to start using MATLAB with little or no prior programming experience – Relatively easy to learn – Can be used as a calculator or as a programming language – Can be used to test simple algorithms (command line or scripts) prior to coding in a higher-level language Why MATLAB? • Pros: – MATLAB has a large library of optimized, robust mathematical functions – MATLAB has a large collection of very powerful toolboxes (e.g. image processing, statistics) – Easy to produce 2D and 3D graphs Why Not MATLAB? • Cons: – Cost associated with ease of use • Interpreted language • Slow (10-100x) compared to some other programming languages (e.g. C, C++, FORTRAN, Pascal) • May be too slow to solve large problems – Fairly expensive (free alternatives available) – Designed for scientific computing • Not always the best solution for other applications 2-by-2 System of Equations • Can solve graphically • Can add/subtract equations x y 4 x y 0 2x 4 x2 2y 4 y2 2-by-2 System of Equations • Can solve with the cross or outer product – cross () 1 1 4 2 1 1 4 2 2 2 4 0 2 1 n-by-n System of Equations • What about higher dimensions? • Cross product only works in 3D. • Harder (impossible?) to visualize. – Circuit analysis example • Graph theory (non-planar) and linear algebra • 6-by-6 system of equations Matrix Operations • The entry (or element) in row i and row j of a matrix, A, is denoted by aij • The entry in row i of a vector (i.e. matrix with only one column) v is denoted by vi. a11 A a21 a31 a12 a22 a32 a13 a23 a33 a14 a24 a34 v1 v v 2 v3 v4 Matrix Operations • Two matrices are equal if: – They are the same size – All corresponding entries are equal • Two matrices can be added together if they have the same size (i.e. the same number of rows and columns) C = A+B cij aij bij Matrix Operations • Multiplication by a scalar a11 cA c a21 a12 ca11 ca12 a22 ca21 ca22 • Matrix-vector multiplication n b Ax bi aij x j j 1 – If A is m-by-n and x is n-by-1, b is m-by-1. Matrix Operations • Matrix-vector multiplication Ax = b a11 a 21 a31 a12 a22 a32 a13 a23 a33 x1 a14 a11 x1 a12 x2 a13 x3 a14 x4 b1 x2 a24 a21 x1 a22 x2 a23 x3 a24 x4 b2 x3 a34 a31 x1 a32 x2 a33 x3 a34 x4 b3 x4 Matrix Operations • Matrix-matrix multiplication n C AB cij aik bkj k 1 – If A is m-by-r and B is r-by-n, C is m-by-n. Matrix Operations • Matrix-matrix multiplication – To find cij (i.e. the element of C in row i and column j) multiply corresponding entries in row i of A and column j of B, and add them together. C AB a11 a 21 a12 b11 b12 a11b11 a12b21 a22 b21 b22 a21b12 a22b21 a11b12 a12b22 c11 c12 a21b12 a22b22 c21 c22 Matrix Operations AB BA A + B + C = A + B + C A BC = AB C A B + C = AB + AC B + C A = BA + CA AB BA Matrix Operations • Zero matrix – A matrix where each element is 0 – zeros() 0 0 04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Matrix Operations • Identity matrix – Square (i.e. m=n) – Diagonal entries equal to 1; all others are 0. – Multiplication by the identity matrix doesn’t change the matrix – eye() 1 0 0 0 0 1 0 0 I4 0 0 1 0 0 0 0 1 Row Reduction • Elementary row operations – Multiply a row by a scalar. – Add a scalar multiple of one row to another. – Exchange two rows. • Solve Ax=b – Row reduction with augmented matrix a11 a 21 a31 a12 a22 a32 a13 b1 1 0 0 x1 a23 b2 0 1 0 x2 a33 b3 0 0 1 x3 2-by-2 cont’d • Back to 2-by-2 example – Rewrite as a matrix equation x y 4 x y 0 1 1 x 4 1 1 y 0 – Form an augmented matrix 1 1 4 1 1 0 2-by-2 cont’d • Solve by row reduction – Make left side look like an identity matrix using only elementary row operations 1 1 4 1 1 0 1 1 4 0 2 4 1 0 1 0 1 4 1 2 0 2 1 2 Rank • r=rank(A) • Number of leading 1’s in the row-reduced matrix • From previous example, rank(A)=2 1 1 4 1 0 2 1 1 0 0 1 2 Matrix Inverse • Matrix inverse – A must be square and full rank – If a matrix can be found such that AB=In, then B is called the inverse of A. 2-by-2 cont’d • Computing the inverse A I I A -1 1 1 1 0 1 1 0 1 1 1 1 0 0 2 1 1 1 0 1 0 1 1 0 1 0.5 0.5 0 0.5 0.5 1 0.5 0.5 x A 1b 0.5 0.5 4 2 0.5 0.5 0 2 Matrix Inverse -1 • If A is n-by-n and rank(A)=n, then A exists. – Implies there is a solution for every b • b is in the range of A – inv() • If A and B are both invertible, 1 A 1 A 1 1 AB B A 1 2-by-2 cont’d • Inconsistent (no solution) – n=2, Rank=1 – Inverse doesn’t exist x y 4 x y 5 1 1 x 4 1 1 y 5 1 1 4 0 0 1 2-by-2 cont’d • Consistent (infinite solutions) – n=2, Rank=1 – Inverse doesn’t exist x y 4 2x 2 y 8 1 2 1 0 1 x 4 2 y 8 1 4 0 0 Matrix Transpose • Transpose (‘ in MATLAB) – Swap rows and columns B AT bij a ji A T T A B A T + BT T cA cAT T AB BT AT T T 1 2 3 4 1 3 5 2 4 6 5 6 A Scalar Product • Also called inner or dot product – Vectors must have the same length (size) – Multiply corresponding elements and add n u v = ui vi u1v1 u2 v2 i 1 un vn Scalar Product • Inner (dot) product u1 u = u2 u3 v1 v v2 uT v u1v1 u2 v2 u3v3 v3 – Also written as: u v uT v u v cos Scalar Product • Properties u v v u u v w u v u w k u v ku v u kv vv 0 vv 0 v = 0 Norms • Vector norms – 1-norm n x 1 xi i 1 – 2-norm (Euclidean norm or length) x2 n 2 T x x x i i 1 – Infinity-norm x max x1 , x2 , , xn Norms • Matrix Norm – 1-norm (column sum) m A 1 max aij 1 j n i 1 – 2-norm – later n – Infinity norm (row sum) – Frobenius norm A A F max aij 1i m m j 1 n 2 a ij i 1 j 1 Norms • Vector norm properties x 0 x 0x0 x x x+y x y • Matrix norm properties A 0 A A A+B A B AB A B Vector Product • Also called the cross product – 3D only u 2 v 3 - u 3 v 2 u v u3 v1 - u1 v 3 u1 v 2 - u 2 v1 Vector Product • Properties u v u v uv w u v u w u v w u w v w k u v ku v u kv u0 0u 0 uu 0 Unit Vectors • Unit vector v uˆ v uˆ 1 • Projections w uT v v 2 v Noise • Always present • Quantization noise • Finite word length (data type differences (intn, uintn, float, double) – Catastrophic cancellation • Electronic noise, photon noise, etc. • When is it a problem? Depends on the problem. • Be aware of effects of noise! Ill-Conditioning x 2y 4 2 x 3.999 y 7.999 2 x 4 1 2 3.999 y 7.999 Ill-Conditioning • Results are sensitive to noise • Loss of precision • cond() – condition number x 2 y 4.001 2 x 3.999 y 7.998 1.001x 2.001y 4 2.001x 3.998 y 7.999 Ill-Conditioning • Trefethen least-squares ill-conditioned example (14th-order polynomial fit) • Solution by different methods – \ - matrix divide – inv() – matrix inverse – LU() – LU decomposition – QR() – QR decomposition – SVD() – Singular value decomposition MATLAB Workspace • • • • • Using MATLAB as a calculator Command window Command history Current directory Workspace MATLAB Workspace • • • • Help browser diary() Saving/loading the workspace Quitting MATLAB Variables, Assignments, and Keywords • Datatypes - scalars, vectors ([1, 2, 3, 4], [1:4]), matrices ([m,n], [1, 2; 3, 4]), uintn, intn, double, char, structs, cells, classes • Vector – magnitude and direction, n-tuple n m n m) • Matrix – mapping from R to R (or C to C , collection of vectors, representation of an image, representation of a system of equations Variables, Assignments, and Keywords • • • • Entering variables, vectors and matrices Incrementation and overwriting of variables Recalling expressions and making corrections Addressing vector and matrix elements – v(m:n), v(m:step:n), v([1 3 5 2 4 6]) – A(:,j), A(i,:), A(i,j:end) Matrix Properties • • • • • • • • • size(), length() Manipulating vectors and matrices reshape(), transpose operator(‘) Transpose algebra Inverse algebra Row/column vectors Matrices from vectors Semicolons – index generator Vector and matrix norms (1, 2, infinity, Frobenius) Special Matrices • Square, symmetric, skew-symmetric, diagonal, identity, upper/lower triangular, banded or Toeplitz, circulant, Vandermonde • eye(), zeros(), ones(), diag(), toeplitz(), rand(), randn(), etc. Notation and Operators • • • • Colon notation Indexing Conformance Expressions, operators (normal and elementwise), and operator precedence (+, -, *, /, ^, :, ;, ,, …, %, ‘, =, (), [], .+, .-, .*, ./, .^, .\, .’, < <=, >, >=, ==, ~=, &, |, &&, ||) • Operator Precedence Built-In Functions • cd, clc, clear, clear x, dir, pwd, exist, type, who, which • linspace • disp, length, ndims, numel, size • cross, diag, dot, end, kron, max, min, prod, reshape, sort, sum, size • det, inv, linsolve, lu, norm, null, orth, rank, rref, trace • cond – condition number and loss of precision Operators • Calculations with vectors and matrices (+, -, *, ^, .*, .^) • Operators and element-wise operators • Solving linear systems (inv, LU, QR, SVD, normal equations, pseudo-inverse) • Inconsistent • Consistent, full rank • Consistent, rank-deficient Operators • • • • Least squares fitting Robust fitting Matrix inverse Matrix functions (det, diag, eig, inv, norm, rank) Special Variables • ans, eps, i, j, NaN, pi, Inf, and –Inf Programming • Writing your own functions (implies input and output arguments, variables in local workspace) • Functions – [output_argument_list]=function function_name(input_argument_list) • Scripts (implies no input or output arguments, variables in global workspace) – Variables in the global workspace may be overwritten – Script execution can be affected by variables in the global workspace – Advisable to use functions for large and/or complicated applications Programming cont’d • • • • • • • • • Comments (%) Recursion Pretty print Operation types Sequential (commands executed in order) Conditional (if-then-else, switch-case) Iterative (for loops, do loops) Structured programing Reusable code Programming - Flow Control • Looping – for-end – Indexing (also reverse indexing) – while-end – break – continue – return Programming - Flow Control • Conditional statements – if-elseif-else-end – Relational operators (>, <, >=, <=, ==, ~=, &, |, ~) – Boolean algebra (truth tables, Karnaugh maps, DeMorgan’s Law) – bitor, bitand, bitxor, xor, and, or, not – switch-case-end Debugging • • • • • • • • • • Breakpoints Conditional breakpoints Step into Step over Return Examining variables dbquit disp() End debugging from menu Function keys Help System • Help command • Product Help Editor • Editor window • Pretty print (smart indent, ctrl-i) • Comments - % (ctrl-r, ctrl-t) I/O – Plotting and Graphics • • • • • 2D/3D Plots Plotting points and lines plot(), plot3(), surf(), mesh() Line color and style (color, linestyle) Marker color and style General I/O • • • • • To/from screen and files Binary and text file I/O format (format long, format short, etc.) Numerical format load, save, fopen, fscanf, fprintf, sprintf, fclose Image I/O • • • • imread, imwrite, imshow, imagesc, colormap Image types Image manipulation Image display (imshow, imscale) Fourier • • • • • • • Complex variables Complex algebra Complex exponential Fourier series Fourier transform Fast Fourier transform Sampling GUI Development • Event-driven programming • Design and implementation Matrix Decompositions • LU, Cholesky, QR, SVD • Condition number, accuracy, FLOPS Equation Solving • • • • • • • Matrix division inv(), \, / Pseudo-inverse LU decomposition QR decomposition SVD Operation counts versus robustness Least-Squares • • • • • • Normal equations Pseudo-inverse solution Ill-conditioning SVD solution Camera calibration 3D measurement Eigenvalues • eig() Performance • • • • Vectorization Preallocation of variables Timing (tic, toc) Profiler Toolbox Overview • • • • • Signal Processing Image Processing Statistics Optimization Parallel Processing Image Processing and Image Analysis • Morphology • Filtering • Convolution