cis 601 matlab first impressions. matlab this introduction will give some basic ideas main...

57
CIS 601 MATLAB First Impressions

Upload: lucas-perkins

Post on 27-Dec-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

CIS 601

MATLAB

First Impressions

Page 2: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB

This introduction will give

• Some basic ideas

• Main advantages and drawbacks compared to other languages

Page 3: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB

What Is MATLAB?

MATLAB (MATrix LABoratory)• high-performance language for technical computing• computation, visualization, and programming in an easy-to-

use environment

Typical uses include:

• Math and computation• Algorithm development• Modelling, simulation, and prototyping• Data analysis, exploration, and visualization• Scientific and engineering graphics• Application development, including Graphical User Interface

building

Page 4: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB

Matlab is an INTERPRETED language…with all the advantages and drawbacks !…there is a Matlab Compiler, but it’s not worth too much in terms of speed

Matlab takes care of the usual programming overhead, e.g. memory allocation, datatype conversion, parameters by value/reference… with all the advantages and drawbacks !

Matlab is NOT object oriented, although there are some attempts to extend it

Page 5: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB

Matlab is able to cooperate with other languages, e.g.

• C, C++• JAVA• Fortran

Page 6: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Why MATLAB

A good choice for vision program development because:

• Easy to do very rapid prototyping• Easy to learn, well documented• A good library of image processing functions• Excellent display capabilities• Widely used for teaching and research in

universities and industry• Another language to impress your boss with !

Page 7: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Why not MATLAB

Has some drawbacks:

• Slow for some kinds of processes• Not geared to the web• Not designed for large-scale system

development

Page 8: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB Components

MATLAB consists of:

• The MATLAB language• a high-level matrix/array language with control flow statements, functions,

data structures, input/output, and object-oriented programming features.

• The MATLAB working environment• the set of tools and facilities that you work with as the MATLAB user or

programmer, including tools for developing, managing, debugging, and profiling

• Handle Graphics• the MATLAB graphics system. It includes high-level commands for two-

dimensional and three-dimensional data visualization, image processing, animation, and presentation graphics.

• …(cont’d)

Page 9: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB Components

• The MATLAB function library. • a vast collection of computational algorithms ranging from elementary

functions like sum, sine, cosine, and complex arithmetic, to more sophisticated functions like matrix inverse, matrix eigenvalues, Bessel functions, and fast Fourier transforms as well as special image processing related functions

• The MATLAB Application Program Interface (API)• a library that allows you to write C and Fortran programs that interact with

MATLAB. It include facilities for calling routines from MATLAB (dynamic linking), calling MATLAB as a computational engine, and for reading and writing MAT-files.

Page 10: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

MATLAB

Some facts for a first impression

• Everything in MATLAB is a matrix !

• again: MATLAB is an interpreted language, no compilation needed (but possible)

• again: MATLAB does not need any variable declarations, no dimension statements, has no packaging, no storage allocation, no pointers

• Programs can be run step by step, with full access to all variables, functions etc.

Page 11: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

What does Matlab code look like?

A simple example:

a = 1while length(a) < 10a = [0 a] + [a 0]end

What’s the output ?

Page 12: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

What does Matlab code look like?

A simple example:

a = 1while length(a) < 10a = [0 a] + [a 0]end which prints out Pascal’s triangle:

11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1

(with “a=” before each line).

Page 13: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

What does Matlab code look like?

Another simple example :

t = 0:pi/100:2*pi;y = sin(t);plot(t,y)

Page 14: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

What does Matlab code look like?

Another simple example:

t = 0:pi/100:2*pi;y = sin(t);plot(t,y)

Remember:

EVERYTHING IN MATLAB IS A MATRIX !

creates 1 x 200 Matrix

Argument and result: 1 x 200 Matrix

Page 15: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Matrices

!

Page 16: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Matrices

•Rows and columns are always numbered starting at 1

•Matlab matrices are of various types to hold different kinds of data (usually floats or integers)

• A single number is really a 1 x 1 matrix in Matlab!

• Matlab variables are not given a type, and do not need to be declared

• Any matrix can be assigned to any variable

Page 17: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Matrices

Building matrices with [ ]:

A = [2 7 4]

A = [2; 7; 4]

A = [2 7 4; 3 8 9]

B = [ A A ]

2 7 4

274

2 7 43 8 9

?

Page 18: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Matrices

Building matrices with [ ]:

A = [2 7 4]

A = [2; 7; 4]

A = [2 7 4; 3 8 9]

B = [ A A ]

2 7 4

274

2 7 43 8 9

2 7 43 8 9

2 7 43 8 9

Page 19: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Matrices

Page 20: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Matrices

Some operators must be handled with care:

A = [1 2 ; 4 5]

B = A * A prints 9 12 24 33

B = A .* A prints 1 4 16 25

Element by element multiplication

Page 21: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Submatrices

A matrix can be indexed using another matrix, to produce a subset of its elements:

a = [100 200 300 400 500 600 700] b = [3 5 6]

c = a(b):

300 500 600

Page 22: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Submatrices

To get a subsection of a matrix, we can produce the index matrix with the colon operator:

a(2:5)prints

ans = 200 300 400 500

•This works in 2-D as well, e.g. c(2:3, 1:2) produces a 2 x 2 submatrix.

•The rows and columns of the submatrix are renumbered.

Page 23: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

loops

‘for’ loops in MATLAB iterate over matrix elements:

b = 0for i = [ 3 9 17]

b = b + i;end

Result: 29

Note:THIS IS NOT THE WAY YOU SHOULD

PROGRAM A SUM, SINCE LOOPS ARE SLOWIN MATLAB !

Page 24: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

loops

‘for’ loops in MATLAB iterate over matrix elements:

b = 0for i = [ 3 9 17]

b = b + i;end

Result: 29

The MATLAB way to write that program would have been:b = sum([ 3 9 17]);

Avoid loops if possible !

Page 25: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

% Example for runtime difference of loops and built in functions

a=rand(10000,1000); % Matrix with 10000000 (1e7) elements

tictheSum=0;for i=1:size(a,1) for j=1:size(a,2) theSum = theSum + a(i,j); endendtoc

fprintf('result of loop: %f\n',theSum);tictheSum=sum(a(:));tocfprintf('result of loop: %f\n',theSum);

-----------------------------------------------

Elapsed time is 0.203000 seconds.result of loop: 4999093.175950Elapsed time is 0.078000 seconds.result of loop: 4999093.175950

loops

Here: Speed up factor 2.6

Page 26: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

loops

The typical ‘for’ loop looks like:

for i = 1:6…

end

Which is the same as:

for i = [1 2 3 4 5 6]…

end

Page 27: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

loops

Or a bit more sophisticated:

for i = 1:2:7…

end

Which is the same as:

for i = [1 3 5 7]…

end

Page 28: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

loops

Once again:

AVOID LOOPS

Page 29: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Avoiding loops

How to avoid loops:

Task: count the elements being greater than 5 in the following matrix M:

2 7 43 8 9

2 7 43 8 9

Page 30: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

The non-MATLAB way:

counter=0For rows=1:2

For columns=1:6 if M(rows,columns) > 5inc counter

endend

Avoiding loops

Page 31: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

The MATLAB way:

T = M > 5;Count = sum (T(:)) ;

Or shorter:

Count = sum(M(:) > 5);

Avoiding loops

Page 32: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Another example, showing the mighty

INDEXING possibilities:

Task: eliminate the whitespaces in the following vector M

Avoiding loops

A B C D A B C D

Page 33: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

i = find (M ~= ‘ ‘); % result: i=[1 3 4 6]M = M(i);

Or shorter:

M=M(find(M ~= ‘ ‘);

Avoiding loops

A B C D A B C D

Page 34: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

survivingSubSegs = pointDensity >= minDensity;

diffSubSegs = diff([0 survivingSubSegs 0]); startSeg = find(diffSubSegs == 1); endSeg = find(diffSubSegs == -1) - 1;

Avoiding loops

An example how to work without loops, taken from the EMSF algorithm for line detection

What’s the purpose ?

Page 35: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

So why MATLAB and IMAGE PROCESSING ?

Page 36: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Images can be treated as matrices !

Page 37: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Loading an image:

a = imread(‘picture.jpg’);imshow(a);

Page 38: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Image (=matrix) size:size(a): 384 512 3

R G B

384

512

Page 39: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Color image:3D Matrix of RGB planes

Page 40: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Show RED plane:

a(:,:,2:3) = 0;imshow(a);

Page 41: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Show GREEN plane:

a(:,:,[1 3]) = 0;imshow(a);

Page 42: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Show BLUE plane:

a(:,:,1:2) = 0;imshow(a);

Page 43: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Advanced: Shuffling columns

rn = rand(1,512);[rn1,i] = sort(rn);b = a(:,i,:);imshow(b);

Page 44: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Images

Page 45: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

By the way…

MATLAB can also handle

• Movies

• 3D objects

• …

Page 46: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Conclusion

MATLAB is a mighty tool to manipulate matrices

Images can be treated as matrices

MATLAB is a mighty tool to manipulate images

Page 47: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

In my opinion…

MATLAB should be used to code software prototypes

Research is mostly about prototypes, not runtime-optimized software

MATLAB should be used in research

Page 48: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

In my opinion…

•MATLAB prototypes must be re-coded (e.g. in C++) if there’s need for speed

•Algorithm development time is drastically shorter in MATLAB

Page 49: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

Conclusion

CONCLUSION:

Use MATLAB

Page 50: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

MATLAB is exceptionally well documented:

Opening

help/MATLAB help/Getting started

help/MATLAB help/Using MATLAB

Offers help to the environment, programming concepts, function libraries etc.

Page 51: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

The ‘help <functionname>’ command shows the first comment-lines of the function given by the m-file <functionname>.

‘Doc’ does the same, but nicer (html-style, graphics, examples)

Page 52: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

The TAB key automatically extends commands given. This is sometimes helpful if the function name should be obvious:

•Task: sort the rows of the matrix A•Idea: there could be a function named ‘sortXXXX’•Type: ‘sort + TAB’•Result: sort,sortcellchar,sorted,sortiv,sortrows, sortrowsc

Page 53: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

Result: sort,sortcellchar,sorted,sortiv,sortrows, sortrowsc

This looks promising ! ‘help sortrows’ will exclude doubt:

SORTROWS Sort rows in ascending order.Y = SORTROWS(X) sorts the rows of the matrix X in ascending order as a group. X is a 2-D numeric or char matrix. For a char matrix containing strings … (+usage, examples etc.)

Page 54: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

Another helpful command is ‘lookfor’:

‘lookfor <topic>’ looks for the string <topic> in all first comments lines (the ones shown by the ‘help’ command) of ALL functions, returning functions with a hit.

e.g. ‘lookfor sort’:

Page 55: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

e.g. ‘lookfor sort’:

bestof.m: %BESTOF(index,names,M,n,<show>) returns the sorted comparison values of polygon(index) + filenamesCPLXPAIR Sort numbers into complex conjugate pairs.ISSORTED True for sorted vector.SORT Sort in ascending order.SORTROWS Sort rows in ascending order.RTMDLSORTFLDS is a RTW support function.DSORT Sort complex discrete eigenvalues in descending order.ESORT Sort complex continuous eigenvalues in descending order. DSPBLKSORT DSP Blockset sort block helper function. UISORTDATA GUI for sorting matrices by rowXREGLVSORTER Function to sort items in listviewsortiv.m: % function [out,err] = sortiv(in,sortflg,nored,epp)EIGFUN Function to return sorted eigenvalues (used in GOALDEMO).V2SORT Sorts two vectors and then removes missing elements.……

Page 56: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

Note:…a creative search using the right topics with ‘lookfor’ can save a lot of time. MATLAB comes with mostly all basic things you can think of. Search before you program !

… a Google search ‘MATLAB +topic’ is sometimed an unbelievably satisfying source of time-saving program collections.

Page 57: CIS 601 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages

How to go on

Now: • browse the documentation !• read sample codes !• simply browse the list of functions (doc)• Try and type some lines, use the graphics !