%------------------------------------------------------------------------------ % CS100J, Spring 2000 % Lecture 26 % Thurs 4/26 %------------------------------------------------------------------------------ echo on clc % Arrays % + MATLAB's law: "everything an array" % + sometimes say MATRIX % - an array is a more general quantity % - MATLAB classifies some operations as array and others as matrix pause %------------------------------------------------------------------------------ clc % Scalar % + 1 row and col % + "0-dimensional" array 1, [1], [[1]] % MATLAB will remove redundant []s % So, all output is just 1 pause %------------------------------------------------------------------------------ clc % One-Dimension % + one row or one column % + MATLAB stores information as rows, usually % - to separate individual elements, use spaces or commas % - to separate individual rows, use semicolons [1 2 3] % 1-D array (row) [1;2;3] % 1-D array (col) pause %------------------------------------------------------------------------------ clc % Two-Dimension % + multiple rows and columns % + also called rectangular % + see vectors for separating rows and columns [1 2; 3 4] % square matrix with rows [1 2] and [3 4] [1,2; 3,4] % same as [1 2; 3 4] pause % + rectangularity must be preserved % [1,2; 3] % fails because second row has only 1 element pause % appending arrays A=[1 2; 3 4] [A,A] % creates an array of 4 columns and two rows pause %------------------------------------------------------------------------------ clc % Transpose % + to store using columns, gets a bit more complicated % + use transpose operator $'$ % + 1-D: % ri' = rj (rows become columns and vice versa) r=[1 2 3] r' pause % + 2-D: % Aij = Aji A A' pause r1 = [1 3]; r2 = [2 4]; [r1' r2'] pause %------------------------------------------------------------------------------ clc % Matrices % + same structure and look as an array % + usually means rectangular or square, but could have more dimensions % + a matrix is an array that represents a linear transformation % % Ax = b % A: coefficient matrix % x: solution vector % b: source vector % % example) % 2x-2y = 10 \ [ 2 -2] {x} = {10} % >-> [-2 5] {y} {20} % -2x+5y = 20 / A x b % % A transforms x into b % Find x from solution of simultaneous equations % (save for later --> see MATLAB Handouts online) % pause %------------------------------------------------------------------------------ % Everything is an array % + suppose want to solve something multiple times: sin(0), sin(pi/2), sin(pi), sin(3*pi/2), sin(2*pi) pause % + slightly quicker way sin([0 pi/2 pi 3*pi/2 2*pi]) pause % is there an even quicker way? % + colon (see $help colon$) % create vector: start:stop (increments by 1) % create vector: start:inc:stop (increments by inc, but won't exceed stop) % examples) A = 0:pi/2:2*pi sin(A) % briefer: sin(0:pi/2:2*pi) % see also $help linspace$ % $linspace(start,stop,numberofvalues)$ sin( linspace(0,2*pi,5) ) pause clc % + Miscellaneous % help zeros % help ones % help eye % help length % help size % help rand % help diag %------------------------------------------------------------------------------ % Indexing % + finding the location (or, position) of an element in an array % + use index or subscript % % A % ijk.... % 1st index (i) is 1st dimension (row) % 2nd index (j) is 2nd dimension (col), % 3rd index (k) is 3rd dimension (page) % and so on.... % % + useful help pages: % help paren clc pause % + examples) A=['a' 'b' 'c'; 'd' 'e' 'f'] % create array of strings pause % + single index extraction for 2D array (might seem peculiar) % see $help colon$ pause clc A(:) % get all elements of A and put in column % start at "first" element and work down columns, then rows % yes, I understand this might seem strange pause A(1) % get first element from all the elements (as if in column) pause A(4) % get 4th element from all the elements (as if in column) pause A(1:3) % get first thru third elements pause % + "regular extraction" A(1,2) % get element at row 1, col 2 pause % + using a colon (this might hurt) % for now, assume 2D array % nameofarray(vectorofrows,vectorofcols) % vectors for rows and cols must not violate dimensions of A % (unless you are inserting something -- discussed in "Insertion" later) clc A([1 2],[1 2]) pause A([1:2],[1:2]) pause A(1:2,1:2) pause % A(1:2 1:2) % won't work! % % + more sophisticated use of colon % say "for these columns and these rows" % pause clc A(:,:) % extract all rows and all cols pause A(:,1) % for all rows of A, extract the elem from the 1st column % shorter: get 1st column from A pause A(1,:) % for all cols of A, extract the first (or "top") elem % for the 1st row of A, extract all cols % even shorter: get 1st row of A pause clc % example) B = rand(5,4) pause B([1 2 3],:) % for all cols, get 1st thru 3rd row elements % extract first three rows pause clc B([3 2 1],:) % extract 3rd, 2nd, 1st elements from each col % extract first three rows in reverse order pause clc B(:,[4 1]) % for all rows, extract 4th and 1st elements % extract 4th and 1st columns pause clc B([2 5],[4 2]) % extract elements with locations (2,4) (2,2) (5,4) (5,2) % extract subarray pause clc B([1 2 4],[3 1]) % from rows 1 2 4, extract cols 3 1 pause clc %------------------------------------------------------------------------------ % Insertion clear A=zeros(3,4) pause A(1) = 1 pause A(2,3) = 23 pause A(1,[1 2 3 4]) = [100 200 300 400] pause clc % + when colon on left side of assignment, MATLAB takes elements from the % right side and inserts in the left-side matrix A(2,:) = [0.1 0.2 0.3 0.4] % + can insert beyond dimensions! % MATLAB fills in needed "spots" with zeros clear clc C=[1 2; 3 4] C(6,6) = 10 %------------------------------------------------------------------------------ % exercise Z=[1:3 ; 6:8] % swap rows Z([2 1],:) = Z([1 2],:) pause %------------------------------------------------------------------------------