Introduction to MATLAB and MATLAB Programming #1.
-
Upload
neil-wilfrid-nicholson -
Category
Documents
-
view
298 -
download
4
Transcript of Introduction to MATLAB and MATLAB Programming #1.
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
C C
u
v
uv
1
~ v
u
x
1
~ v
u
x
1
~
w
w
w
z
y
x
X
wz
wx
wy
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?– A linear mapping from Rn to Rm (or Cn to Cm)** • 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
4
0
x y
x y
2 4
2
x
x
2 4
2
y
y
2-by-2 System of Equations
• Can solve with the cross or outer product– cross ()
1 1 4 22
1 1 4 22
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.
11 12 13 14
21 22 23 24
31 32 33 34
a a a a
a a a a
a a a a
A
1
2
3
4
v
v
v
v
v
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)
ij ij ijc a b C = A+B
Matrix Operations
• Multiplication by a scalar
• Matrix-vector multiplication
– If A is m-by-n and x is n-by-1, b is m-by-1.
11 12 11 12
21 22 21 22
a a ca cac c
a a ca ca
A
1
n
i ij jj
b a x
b Ax
Matrix Operations
• Matrix-vector multiplication
111 12 13 14 11 1 12 2 13 3 14 4 1
221 22 23 24 21 1 22 2 23 3 24 4 2
331 32 33 34 31 1 32 2 33 3 34 4 3
4
xa a a a a x a x a x a x b
xa a a a a x a x a x a x b
xa a a a a x a x a x a x b
x
Ax = b
Matrix Operations
• Matrix-matrix multiplication
– If A is m-by-r and B is r-by-n, C is m-by-n.1
n
ij ik kjk
c a b
C AB
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.
11 12 11 12 11 11 12 21 11 12 12 22 11 12
21 22 21 22 21 12 22 21 21 12 22 22 21 22
a a b b a b a b a b a b c c
a a b b a b a b a b a b c c
C AB
Matrix Operations
A B B A
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()
4
0 0 0 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()
4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
I
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
11 12 13 1 1
21 22 23 2 2
31 32 33 3 3
1 0 0
0 1 0
0 0 1
a a a b x
a a a b x
a a a b x
2-by-2 cont’d
• Back to 2-by-2 example– Rewrite as a matrix equation
– Form an augmented matrix
1 1 4
1 1 0
x
y
4
0
x y
x y
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
0 1 2
1 0 2
0 1 2
1 1 4
1 1 0
1 1 4
0 2 4
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
1
0.5 0.5 4 2
0.5 0.5 0 2
x A b
-1 A I I A
1 1 1 0
1 1 0 1
1 1 1 0
0 2 1 1
1 1 1 0
0 1 0.5 0.5
1 0 0.5 0.5
0 1 0.5 0.5
Matrix Inverse
• If A is n-by-n and rank(A)=n, then A-1exists.– Implies there is a solution for every b• b is in the range of A
– inv()• If A and B are both invertible,
11
1 1 1
A A
AB B A
2-by-2 cont’d
• Inconsistent (no solution)– n=2, Rank=1– Inverse doesn’t exist
1 1 4
1 1 5
1 1 4
0 0 1
x
y
4
5
x y
x y
2-by-2 cont’d
• Consistent (infinite solutions)– n=2, Rank=1– Inverse doesn’t exist
1 1 4
2 2 8
1 1 4
0 0 0
x
y
4
2 2 8
x y
x y
Matrix Transpose
• Transpose (‘ in MATLAB)– Swap rows and columns
TT
T T T
T T
T T T
c c
A A
A B A +B
A A
AB B A
T
ij jib a
B A
1 21 3 5
3 42 4 6
5 6
T
Scalar Product
• Also called inner or dot product– Vectors must have the same length (size)– Multiply corresponding elements and add
1 1 2 21
n
i i n ni
u v u v u v u v
u v =
Scalar Product
• Inner (dot) product
– Also written as:
cosT u v u v u v
1 1
2 2 1 1 2 2 3 3
3 3
T
u v
u v u v u v u v
u v
u = v u v
Scalar Product
• Properties
0 0
k k k
u v v u
u v w u v u w
u v u v u v
v v v v v = 0
Norms
• Vector norms– 1-norm
– 2-norm (Euclidean norm or length)
– Infinity-norm
11
n
ii
x
x
1 2max , , , nx x x
x
2
21
nT
ii
x
x x x
Norms
• Matrix Norm– 1-norm (column sum)
– 2-norm – later
– Infinity norm (row sum)
– Frobenius norm
1 11
maxm
ijj n
i
a
A
11
maxn
iji m
j
a
A
2
1 1
m n
ijFi j
a
A
Norms
• Vector norm properties
• Matrix norm properties0
A
A A
A+B A B
AB A B
0 0
x x x 0
x x
x + y x y
Vector Product
• Also called the cross product– 3D only
2 3 3 2
3 1 1 3
1 2 2 1
u v -u v
u v u v -u v
u v -u v
Vector Product
• Properties
k k k
u
u v u v
u v w u v u w
u v w u w v w
u v u v u v
u 0 0 0
u u 0
Unit Vectors
• Unit vector
• Projections
ˆ
ˆ 1
vu
v
u
2
T
u v
w vv
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
2 4
2 3.999 7.999
x y
x y
1 2 4
2 3.999 7.999
x
y
Ill-Conditioning
• Results are sensitive to noise• Loss of precision• cond() – condition number
2 4.001
2 3.999 7.998
x y
x y
1.001 2.001 4
2.001 3.998 7.999
x y
x y
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• Matrix – mapping from Rn to Rm (or Cn to Cm),
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 element-
wise), 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