introduction to matlab and matlab programming

Post on 23-Feb-2016

292 Views

Category:

Documents

11 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

~ vu

x

1

~ vu

x

1

~

w

w

w

zyx

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

40

x yx y

2 42

xx

2 42

yy

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 aa a a aa a a a

A

1

2

3

4

vvvv

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 ca a b b a b a b a b a b c c

C AB

Matrix Operations

A B B AA+ B+C = A+B +C

A BC = AB C

A B+C = AB+AC

B+C A = BA+CAAB BA

Matrix Operations

• Zero matrix– A matrix where each element is 0– zeros()

4

0 0 0 00 0 0 00 0 0 00 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 00 1 0 00 0 1 00 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 00 1 00 0 1

a a a b xa a a b xa 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 41 1 0

xy

40

x yx y

1 1 41 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 40 1 2

1 0 20 1 2

1 1 41 1 0

1 1 40 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 21 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 20.5 0.5 0 2

x A b

-1 A I I A

1 1 1 01 1 0 1

1 1 1 00 2 1 1

1 1 1 00 1 0.5 0.5

1 0 0.5 0.50 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 41 1 5

1 1 40 0 1

xy

45

x yx y

2-by-2 cont’d

• Consistent (infinite solutions)– n=2, Rank=1– Inverse doesn’t exist

1 1 42 2 8

1 1 40 0 0

xy

42 2 8x yx 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 vu v u v u v u vu v

u = v u v

Scalar Product

• Properties

0 0k k k

u v v uu v w u v u w

u v u v u vv 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

22

1

nT

ii

x

x x x

Norms

• Matrix Norm– 1-norm (column sum)

– 2-norm – later

– Infinity norm (row sum)

– Frobenius norm

1 1 1

maxm

ijj n i

a

A

1 1

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 vu v u v -u v

u v -u v

Vector Product

• Properties

k k k

u

u v u vu v w u v u wu v w u w v wu v u v u v

u 0 0 0u u 0

Unit Vectors

• Unit vector

• Projections

ˆ

ˆ 1

vuv

u

2

T

u vw 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 42 3.999 7.999x yx y

1 2 42 3.999 7.999

xy

Ill-Conditioning

• Results are sensitive to noise• Loss of precision• cond() – condition number

2 4.0012 3.999 7.998x yx y

1.001 2.001 42.001 3.998 7.999

x yx 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

top related