echo on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Introducing Matlab (adapted from http://www.cns.nyu.edu/~eero) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (1) Help and basics % The symbol "%" is used in front of a comment. % To get help type "help" (will give list of help topics) or "help topic" % If you don't know the exact name of the topic or command you are looking for, % type "lookfor keyword" (e.g., "lookfor regression") % When writing a long matlab statement that exceeds a single row use ... % to continue statement to next row. % When using the command line, a ";" at the end means matlab will not % display the result. If ";" is omitted then matlab will display result. % Use the up-arrow to recall commands without retyping them (and down % arrow to go forward in commands). % Other commands borrowed from emacs and/or tcsh: % C-a moves to beginning of line (C-e for end), C-f moves forward a % character (C-b moves back), C-d deletes a character, C-k deletes % the line to the right of the cursor, C-p goes back through the % command history and C-n goes forward (equivalent to up and down arrows). pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (2) Objects in matlab -- the basic objects in matlab are scalars, % vectors, and matrices... N = 5 % a scalar v = [1 0 0] % a row vector v = [1;2;3] % a column vector v = v' % transpose a vector % (row to column or column to row) pause v = [1:.5:3] % a vector in a specified range: v = pi*[-4:4]/4 % [start:stepsize:end] v = [] % empty vector pause m = [1 2 3; 4 5 6] % a matrix: 1ST parameter is ROWS % 2ND parameter is COLS m = zeros(2,3) % a matrix of zeros v = ones(1,3) % a matrix of ones pause m = eye(3) % identity matrix v = rand(3,1) % rand matrix (see also randn) pause load matrix_data % read data from a file: % create a file 'matrix_data' containing: % 2 3 4 % 5 6 7 % 1 2 3 matrix_data pause v = [1 2 3]; % access a vector element v(3) % vector(number) m = [1 2 3; 4 5 6] m(1,3) % access a matrix element % matrix(rownumber, % columnnumber) pause m(2,:) % access a matrix row (2nd row) m(:,1) % access a matrix column (1st row) pause size(m) % size of a matrix size(m,1) % number rows size(m,2) % number of columns pause m1 = zeros(size(m)) % create a new matrix with size of m who % list of variables pause whos % list/size/type of variables pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (3) Simple operations on vectors and matrices %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (A) Pointwise (element by element) Operations: % addition of vectors/matrices and multiplication by a scalar % are done "element by element" a = [1 2 3 4]; % vector 2 * a % scalar multiplication a / 4 % scalar division pause b = [5 6 7 8]; % vector a + b % pointwise vector addition a - b % pointwise vector addition pause a .^ 2 % pointise vector squaring (note .) a .* b % pointwise vector multiply (note .) a ./ b % pointwise vector multiply (note .) pause log( [1 2 3 4] ) % pointwise arithmetic operation round( [1.5 2; 2.2 3.1] ) % pointwise arithmetic operation pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % (B) Vector Operations (no for loops needed) % Built-in matlab functions operate on vectors, if a matrix is given, % then the function operates on each column of the matrix a = [1 4 6 3] % vector sum(a) % sum of vector elements mean(a) % mean of vector elements pause var(a) % variance std(a) % standard deviation max(a) % maximum pause a = [1 2 3; 4 5 6] % matrix mean(a) % mean of each column max(a) % max of each column max(max(a)) % to obtain max of matrix max(a(:)) % or... pause %%%%%%%%%%%%%%%%%%%%%%%% % (C) Matrix Operations: [1 2 3] * [4 5 6]' % row vector 1x3 times column vector 3x1 % results in single number, also % known as dot product or inner product [1 2 3]' * [4 5 6] % column vector 3x1 times row vector 1x3 % results in 3x3 matrix, also % known as outer product pause a = rand(3,2) % 3x2 matrix b = rand(2,4) % 2x4 matrix c = a * b % 3x4 matrix pause a = [1 2; 3 4; 5 6] % 3 x 2 matrix b = [5 6 7]; % 3 x 1 vector b * a % matrix multiply a' * b' % matrix multiply pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %(4) Saving your work save mysession % creates session.mat with all variables save mysession a b % save only variables a and b pause clear all % clear all variables clear a b % clear variables a and b load mysession % load session a b pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %(5) Relations and control statements % Example: given a vector v, create a new vector with values equal to % v if they are greater than 0, and equal to 0 if they less than or % equal to 0. v = [3 5 -2 5 -1 0] % 1: FOR LOOPS u = zeros( size(v) ); % initialize for i = 1:size(v,2) if( v(i) > 0 ) u(i) = v(i); end end u pause v = [3 5 -2 5 -1 0] % 2: NO FOR LOOPS u2 = zeros( size(v) ); % initialize ind = find( v>0 ) % index into >0 elements u2(ind) = v( ind ) pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %(6) Creating functions using m-files: % Functions in matlab are written in m-files. Create a file called % 'thres.m' In this file put the following: % function res = thres( v ) % u = zeros( size(v) ); % initialize % ind = find( v>0 ) % index into >0 elements % u(ind) = v( ind ) v = [3 5 -2 5 -1 0] %thres( v ) % call from command line pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %(7) Plotting x = [0 1 2 3 4]; % basic plotting plot( x ); plot( x, 2*x ); axis( [0 8 0 8] ); pause x = pi*[-24:24]/24; plot( x, sin(x) ); xlabel( 'radians' ); ylabel( 'sin value' ); title( 'dummy' ); gtext( 'put cursor where you want text and press mouse' ); pause; figure; % multiple functions in separate graphs subplot( 1,2,1 ); plot( x, sin(x) ); axis square; subplot( 1,2,2 ); plot( x, 2.*cos(x) ); axis square; pause figure; % multiple functions in single graph plot( x,sin(x) ); hold on; plot (x, 2.*cos(x), '--' ); legend( 'sin', 'cos' ); hold off; pause figure; % matrices as images m = rand(64,64); imagesc(m) colormap gray; axis image axis off; pause % more info can be found at % http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml echo off