**Title: Arrays and Array Operations** ** 1** Lecture 5 CSE123

Arrays and Array Operations ** 2** Definitions

Scalars Variables that represent single numbers. Note that complex numbers are also scalars, even though they have two components. Arrays Variables that represent more than one number. Each number is called an element of the array. Array operations allow operating on multiple numbers at once. Row and Column Arrays (Vector) A row of numbers (called a row vector) or a column of numbers(called a column vector). Two-Dimensional Arrays (Matrix) A two-dimensional table of numbers, called a matrix. ** 3** Vector Creation by Explicit List

A vector in Matlab can be created by an explicit list, starting with a left bracket, entering the values separated by spaces (or commas) and closing the vector with a right bracket. gtgtx0 .1pi .2pi .3pi .4pi .5pi .6pi .7pi .8pi .9pi pi gtgtysin(x) gtgty Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000

** 4** Vector Addressing / indexation

A vector element is addressed in Matlab with an integer index (also called a subscript) enclosed in parentheses. gtgt x(3) ans 0.6283 gtgt y(5) ans 0.9511 Colon notation Addresses a block of elements. The format is (startincrementend) Note start, increment and end must be positive integer numbers. If the increment is to be 1, a shortened form of the notation may be used (startend) gtgt x(15) ans 0 0.3142 0.6283 0.9425 1.2566 gtgt x(7end) ans 1.8850 2.1991 2.5133 2.8274 3.1416 gtgt y(3-11) ans 0.5878 0.3090 gtgt y(8 2 9 1) ans 0.8090 0.3090 0.5878 0

** 5** Vector Creation Alternatives

Combining A vector can also be defined using another vector that has already been defined. gtgt B 1.5, 3.1 gtgt S 3.0 B S 3.0000 1.5000 3.1000

Changing Values can be changed by referencing a specific address gtgt S(2) -1.0 gtgt S S 3.0000 -1.0000 3.1000

Extending Additional values can be added using a reference to a specific address. gtgt S(7) 8.5 gtgt S S 3.0000 -1.0000 3.1000 5.5000 0 0 8.5000 gtgt S(4) 5.5 gtgt S S 3.0000 -1.0000 3.1000 5.5000

** 6** Vector Creation Alternatives

Colon notation (startincrementend) where start, increment, and end can now be floating point numbers. x(00.11)pi x Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416

linspace generates a vector of uniformly incremented values, but instead of specifying the increment, the number of values desired is specified. The form linspace(start,end,number) The increment is computed internally, having the value

** 7** Vector Creation Alternatives gtgt xlinspace(0,pi,11) x Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 logspace(start_exponent,end_exponent,number) To create a vector starting at 100 1,ending at 102 100 and having 11 values gtgt logspace(0,2,11) ans Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489 Columns 8 through 11 25.1189 39.8107 63.0957 100.0000

** 8** Vector Length length(x) To determine the length of a vector array. gtgt x 0 1 2 3 4 5 x 0 1 2 3 4 5 gtgt length(x) ans 6

** 9** Vector Orientation A column vector, having one column and multiple rows, can be created by specifying it element by element, separating element values with semicolons The transpose operator () is used to transpose a row vector into a column vector gtgt a 15 a 1 2 3 4 5 gtgt c a c 1 2 3 4 5 gtgt c 12345 c 1 2 3 4 5

** 10** Matrix arrays in Matlab Vector Use square brackets. Separate elements on the same row with spaces or commas. Matrix Use semi-colon to go to the next row. A 1 2 3 A 1, 2, 3 B 1 2 3 4 C 5 6 7

** 11** Matrix Arrays

A matrix array is 2D, having both multiple rows and multiple columns. Creation of 2D arrays follows that of row and column vectors Begin with end with Spaces or commas are used to separate elements in a row. A semicolon or Enter is used to separate rows. gtgt h 1 2 3 4 5 6 7 8 9 h 1 2 3 4 5 6 7 8 9 gtgt k 1 23 4 5 ??? Number of elements in each row must be the same. gtgtf 1 2 3 4 5 6 f 1 2 3 4 5 6 gtgt g f g 1 4 2 5 3 6

** 12** Special matrix creation Manipulations and Combinations A 10 10 10 10 Matrix full of 10 gtgt A10ones(2,2) Matrix of random numbers between 0 and 10 gtgt B10rand(2,2) B 4.5647 8.2141 0.1850 4.4470 Matrix of random numbers between -1 and 0 gtgt C -rand(2,2) C -0.4103 -0.0579 -0.8936 -0.3529 Matrix of random numbers between -1 and 1 gtgt C2rand(2,2) ones(2,2) gtgt C2rand(2,2) -1 C -0.6475 0.8709 -0.1886 0.8338

** 13** Special matrix creation Concatenation Combine two (or more) matrices into one Notation C A, B gtgt Aones(2,2) gtgt Bzeros(2,2) gtgtCA , B gtgtDA B D 1 1 1 1 0 0 0 0 C 1 1 0 0 1 1 0 0

** 14** Matrix indexation Obtain a single value from a matrix Ex want to know a21 Notation A(2,1) gtgt A1 2 3 3 2 1 1 2 4 gtgt A(2,1) ans 3 gtgt A(3,2) ans 2

** 15** Matrix indexation Obtain more than one value from a matrix Ex X110 Notation A(13,23) Colon defines a range 1 to 10 Colon can also be used as a wildcard gtgt A1 2 3 3 2 1 1 2 4 gtgt BA(13,23) B 2 3 2 1 2 4 gtgt CA(2,) C 3 2 1

** 16** Matrix size Command Description s size(A) For an m x n matrix A, returns the two-element row vector s m, n containing the number of rows and columns in the matrix. r,c size(A) r,c size(A) Returns two scalars r and c containing the number of rows and columns in A, respectively. r size(A,1) Returns the number of rows in A in the variable r. c size(A,2) Returns the number of columns in A in the variable c.

** 17** Matrix size gtgt whos Name Size Bytes Class A 2x3 48 double array ans 1x1 8 double array c 1x1 8 double array r 1x1 8 double array s 1x2 16 double array gtgt A 1 2 3 4 5 6 A 1 2 3 4 5 6 gtgt s size(A) s 2 3 gtgt r,c size(A) r 2 c 3

** 18** Special matrix creation zeros(M,N) Matrix of zeros ones(M,N) Matrix of ones eye(M,N) Matrix of ones on the diagonal rand(M,N) Matrix of random numbers between 0 and 1 gtgt Azeros(2,3) A 0 0 0 0 0 0 gtgt Bones(2,2) B 1 1 1 1 gtgt Ceye(2,2) C 1 0 0 1 gtgt Drand(3,2) D 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621

** 19** Operations on vectors and matrices in Matlab Math Matlab Addition/subtraction AB A-B Multiplication/ division (element by element) A.B A./B Multiplication(Matrix Algebra) AB Transpose AT A Inverse A-1 inv(A) Determinant A det(A)

** 20** Array Operations

Scalar-Array Mathematics Addition, subtraction, multiplication, and division of an array by a scalar simply apply the operation to all elements of the array. gtgt f 1 2 3 4 5 6 f 1 2 3 4 5 6 gtgt g 2f -1 g 1 3 5 7 9 11

** 21** Array Operations

Element-by-Element Array-Array Mathematics When two arrays have the same dimensions, addition, subtraction, multiplication, and division apply on an element-by-element basis. Operation Algebraic Form Matlab Addition a b a b Subtraction a - b a - b Multiplication a x b a . b Division a / b a ./ b Exponentiation ab a . b

** 22** Array Operations MATRIX Addition (substraction)

** 23** Array Operations Examples Addition Subtraction 2 4 6 0 0 0 10 8 12 0 0 0 14 18 16 0 0 0

** 24** Array Operations

Element-by-Element Array-Array Mathematics gtgt A 2 5 6 gtgt B 2 3 5 gtgt C A.B C 4 15 30 gtgt D A./B D 1.0000 1.6667 1.2000 gtgt E A.B E 4 125 7776 gtgt F 3.0.A F 9 243 729

** 25** Array Operations MATRIX Multiplication (element by element)

** 26** Array Operations Examples Multiplication Division (element by element) 1 4 9 1 1 1 16 25 36 1 1 1 49 64 81 1 1 1

** 27** Array Operations Matrix Multiplication

The matrix multiplication of m x n matrix A and nxp matrix B yields m x p matrix C, denoted by C AB Element cij is the inner product of row i of A and column j of B Note that AB ? BA

** 28** Array Operations Matrix Multiplication Cell 1-1

** 29** Array Operations Example Matrix Multiplication 16 9 11 12 11 13 12 10 14

** 30** Array Operations Solving systems of linear equations Example 3 equations and 3 unknown 1x 6y 7z 0 2x 5y 8z 1 3x 4y 5z 2 Can be easily solved by hand, but what can we do if it we have 10 or 100 equations?

** 31** Array Operations Solving systems of linear equations 1x 6y 7z 0 2x 5y 8z 1 3x 4y 5z 2

** 32** Array Operations Solving systems of linear equations A x S B A x S B A-1 x A-1 x (A-1 x A) x S A-1 x B I x S A-1 x B S A-1 x B

** 33** Array Operations Solving systems of linear equations The previous set of equations can be expressed in the following vector-matrix form A x S B X 1x 6y 7z 0 2x 5y 8z 1 3x 4y 5z 2

** 34** Array Operations Matrix Determinant

The determinant of a square matrix is a very useful value for finding if a system of equations has a solution or not. If it is equal to zero, there is no solution. Notation Determinant of A A or det(A) det(M) m11 m22 m21 m12 IMPORTANT the determinant of a matrix is a scalar

** 35** Array Operations Matrix Inverse

The inverse of a matrix is really important concept, for matrix algebra Calculating a matrix inverse is very tedious for matrices bigger than 2x2. We will do that numerically with Matlab. Notation inverse of A A-1 or inv(A) Formula for a 2x2 matrix M-1 IMPORTANT the inverse of a matrix is a matrix

** 36** Array Operations Matrices properties Property of inverse A x A-1 I and A-1 x A I Property of identity matrix I x A A and A x I A

** 37** Solving systems of equations in Matlab x 6y 7z 0 2x 5y 8z 1 3x 4y 5z 2 In Matlab gtgt A 1 6 7 2 5 8 3 4 5 gtgt B012 gtgt Sinv(A)B Verification gtgt det(A) ans 28 gtgt S 0.8571 -0.1429 0

** 38** Solving systems of equations in Matlab x 6y 7z 0 2x 5y 8z 1 3x 4y 9z 2 In Matlab gtgt A 1 6 7 2 5 8 3 4 5 gtgt B012 gtgt Sinv(A)B Verification gtgt det(A) ans 0 Warning Matrix is singular to working precision. gtgt S NaN NaN NaN NO Solution!!!!!

** 39** Applications in mechanical engineering Find the value of the forces F1and F2

** 40** Applications in mechanical engineering Projections on the X axis F1 cos(60) F2 cos(80) 7 cos(20) 5 cos(30) 0

** 41** Applications in mechanical engineering Projections on the Y axis F1 sin(60) - F2 sin(80) 7 sin(20) 5 sin(30) 0

** 42** Applications in mechanical engineering F1 cos(60) F2 cos(80) 7 cos(20) 5 cos(30) 0 F1 sin(60) - F2 sin(80) 7 sin(20) 5 sin(30) 0 F1 cos(60) F2 cos(80) 7 cos(20) 5 cos(30) F1 sin(60) - F2 sin(80) - 7 sin(20) 5 sin(30) In Matlab, sin and cos use radians, not degree In Matlab gtgt CFpi/180 gtgt Acos(60CF), cos(80CF) sin(60CF), sin(80CF) gtgt B7cos(20CF)5cos(30CF) -7sin(20CF)5sin (30CF) gtgt F inv(A)B or (A\B) Solution F1 16.7406 N F2 14.6139 N F 16.7406 14.6139