Matlab • Scientific programming language specialized in CSED441:Introduction to Computer Vision (2015S) Lecture3: Matlab Tutorial Numerical computing and optimization Matrix & vector operations • Interface with other programming languages such as C/C++ Fortran • Having powerful toolboxes such as Bohyung Han CSE, POSTECH bhhan@postech.ac.kr Image processing and computer vision Optimization Statistics Parallel programming etc. • Able to build a standalone executable file 2 Variables Vectors ≫ x = 15+0.1 x = 15.1000 • Construction Defined with assignment operator (=) Used without declaration ≫ class(x) ans = double ≫ x = true x = 1 ≫ class(x) ans = logical ≫ x = x+1 ans = 2 ≫ class(x) ans = double • Type The type of variables can be changed at any time. Implicit type conversion occurs frequently. 3 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 ≫ x = [2.0 3.1 5.4] • Representation x = Square bracket [] Maybe separated by white space ( ) or comma (,) Apostrophe: transpose operator 2.0000 3.1000 5.4000 ≫ x = [2.0 3.1 5.4]’ x = 2.1000 3.1000 5.4000 ≫ y = [1 ; 2 ; 3]; ≫ y(2:3) y = 2 3 ≫ x’*y = ans = 24.4000 • Accessing elements Parenthesis () • Accessing sub‐vector Parenthesis (indices) 4 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Matrices Built‐in Functions ≫ A = [3 4 5 ; 1 2 3] • Representation • Basic built‐in functions A = Square bracket [] Changing rows by semi‐colon (;) Maybe separated by white space ( ) or comma (,) Apostrophe: transpose operator Size, length Norm Rank Determinant Inverse matrix Eigen‐decomposition Singular value decomposition (SVD) Condition number Pseudo random number generator Many others 3 4 5 1 2 3 ≫ y = [2.0 3.1 5.4]’; ≫ z = A*y z = 45.4000 24.4000 ≫ A(1,2) ans = 4 ≫ A(1:2,[1 3]) ans = 3 5 1 3 • Accessing elements Parenthesis () • Accessing sub‐matrix Parenthesis & comma (row_indices, col_indices) 5 Size, length Norm Rank Determinant Inverse matrix Eigen‐decomposition Singular value decomposition (SVD) Condition number Pseudo random number generator Many others 12 ≫ A = [3 0 1 ; 0 5 3 ; 1 3 9]; ≫ r = rank(A) r = 3 ≫ [V, D] = eig(A) V = -0.8512 0.5122 0.1141 -0.4109 -0.7858 0.4623 0.3265 0.3466 0.8794 D = 2.6165 0 0 0 3.6767 0 0 0 10.7068 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Conditions & Loops ≫ A = [3 0 1 ; 0 5 3 ; 1 3 9]; ≫ [r, c] = size(A) r = 3 c = 3 ≫ det(A) ans = 103 ≫ inv_A = inv(A) inv_A = 0.3495 0.0291 -0.0485 0.0291 0.2524 -0.0874 -0.0485 -0.0874 0.1456 7 n = 6 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Built‐in Functions • Basic built‐in functions ≫ n = norm([3 4 5], 1) CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 • • • • ≫ ≫ ≫ ≫ ≫ if / elseif / else switch for loop while loop a = rand(100,1); b = rand(100,1); c = 0; for i=1:100, c = c+a(i)*b(i); end ≫ ≫ c = 0; ≫ cnt = 0; ≫ ≫ while cnt < 100 cnt = cnt+1; c = c+a(cnt)*b(cnt); end • Almost similar to C/C++ 8 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Help • Manual for each function Plotting & Graphic ≫ help det Function prototype Usages & examples Related functions References Link to Matlab document (very powerful and containing rich description) DET Determinant. DET(X) is the determinan t of the square matrix X. Use COND instead of DET to test for matrix singula rity. See also cond. Reference page in Help b rowser doc det 9 ≫ [X,Y] = meshgrid(-10:0.25:10,-10:0.25:10); ≫ ≫ ≫ ≫ f = sinc(sqrt((X/pi).^2+(Y/pi).^2)); surf(X,Y,f); axis([-10 10 -10 10 -0.3 1]); xlabel('{\bfx}‘); ylabel('{\bfy}'); zlabel('{\bfsinc} ({\bfR})') 10 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Image Processing Toolbox • Image I/O imread Imwrite • Image manipulation imtransform imresize imfilter • Image display imshow • Image processing ≫ img = imread(‘test.jpg’); ≫ size(img) ans = 240 320 3 ≫ imwrite(img, ‘out.png’, ‘png’); ≫ rimg = imresize(img, 0.5); ≫ size(img) ans = 120 160 3 ≫ imshow(rimg); ≫ gimg = rgb2gray(img); ≫ edge(gimg); edge imerode, imdilate: morphological operators 11 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Script and Function • Matlab source code File extension: *.m Script or function mscript1.m c = 3+4; d = 3-4; mathop.m [c,d] = function mathop(a,b) c = a+b; d = a-b; 12 ≫ mscript1 c = 7 d = -1 ≫ [p,q] = mathop(3,4) p = 7 q = -1 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Matlab and C/C++ Important Tip 1 • Matlab compatibility with C/C++ • Use loops as LEAST as possible You can call C/C++ functions from Matlab Advanced resource: http://classes.soe.ucsc.edu/ee264/Fall11/cmex.pdf hello.c #include "mex.h" /* Always include this */ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { mexPrintf("Hello, world!\n"); return; } ≫ mex hello.c ≫ hello Hello, world! 13 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Important Tip 2 Loops are particularly slow in Matlab. ≫ ≫ ≫ ≫ a = rand(10000000,1); b = rand(10000000,1); c1 = 0; tic; for i=1:10000000, c1 = c1+a(i)*b(i); end; toc; Elapsed time is 8.096525 seconds. ≫ tic; c2 = a’*b; toc; Elapsed time is 0.026638 seconds. 14 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Important Tip 3 • The orders and kinds of computations matter. • Do NOT to increase the size of a matrix or vector inside loop. Do matrix‐vector multiplication first. Use Gaussian elimination instead of inverse matrix. Matlab can allocate only consecutive memory. ≫ A = rand(3000,3000); ≫ B = rand(3000,3000); ≫ c = rand(3000,1); ≫ tic; A*B*c; toc; Elapsed time is 7.645052 ≫ tic; A*(B*c); toc; Elapsed time is 0.024930 ≫tic; inv(A)*c; toc; Elapsed time is 9.363578 ≫ tic; A\c; toc; Elapsed time is 2.992717 ≫ a = rand(1,100000); ≫ tic; for i=1:100000, b(i) = a(i); end; toc; Elapsed time is 15.336680 seconds. ≫ c = zeros(1,100000); ≫ tic; for i=1:100000, c(i) = a(i); end; toc; Elapsed time is 0.082945 seconds. 15 seconds. seconds. seconds. seconds. CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 16 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 Octave • Matlab‐like programming language • Most Matlab programs are portable to Octave. • Free (http://www.gnu.org/software/octave/) 17 CSED441: Introduction to Computer Vision by Prof. Bohyung Han, Spring 2015 18
© Copyright 2024