1 / 42

Lecture 5

CSE123. Lecture 5. Arrays and Array Operations. Definitions. Scalars: Variables that represent single numbers . Note that c omplex numbers are also scalars, even though they have two components.

Download Presentation

Lecture 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE123 Lecture 5 Arrays and Array Operations

  2. Definitions • Scalars: Variables that represent single numbers.Note that complexnumbers are also scalars, even though they have two components. • Arrays: Variables that represent more than one number. Each number is called an element of thearray.Array operationsallow 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 thevalues separated by spaces (or commas) and closing the vector with a right bracket. >>x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi] >>y=sin(x) >>y = 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) enclosedin parentheses. >> x(3) ans = 0.6283 >> y(5) ans = 0.9511 Colon notation: Addresses a block of elements. The format is: (start:increment:end) Note start, increment and end must be positive integer numbers. If the increment is to be 1, ashortened form of the notation may be used: (start:end) >> x(1:5) ans = 0 0.3142 0.6283 0.9425 1.2566 >> x(7:end) ans = 1.8850 2.1991 2.5133 2.8274 3.1416 >> y(3:-1:1) ans = 0.5878 0.3090 >> 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. >> B = [1.5, 3.1]; >> S = [3.0 B] S = 3.0000 1.5000 3.1000 • Changing: Values can be changed by referencing a specific address >> S(2) = -1.0; >> S S = 3.0000 -1.0000 3.1000 • Extending: Additional values can be added using a reference to a specific address. >> S(7) = 8.5; >> S S = 3.0000 -1.0000 3.1000 5.5000 0 0 8.5000 >> S(4) = 5.5; >> S S = 3.0000 -1.0000 3.1000 5.5000

  6. Vector Creation Alternatives • Colon notation: • (start:increment:end) • where start, increment, and end can now be floating point numbers. x=(0:0.1:1)*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 ofspecifying the increment, the number of values desired is specified. Theform: • linspace(start,end,number) The increment is computed internally, having the value:

  7. Vector Creation Alternatives >> x=linspace(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: >> 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. >> x = [0 1 2 3 4 5] x = 0 1 2 3 4 5 >> length(x) ans = 6

  9. Vector Orientation A column vector, having one column and multiple rows, can be created by specifying it element byelement, separating element values with semicolons: The transpose operator (’) is used to transpose a row vector into a column vector >> a = 1:5 a = 1 2 3 4 5 >> c = a’ c = 1 2 3 4 5 >> c = [1;2;3;4;5] c = 1 2 3 4 5

  10. Matrix arrays in Matlab 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 semicolonor Enter is used to separate rows. >>f = [1 2 3; 4 5 6] f = 1 2 3 4 5 6 >> g = f’ g = 1 4 2 5 3 6 >> h = [1 2 3 4 5 6 7 8 9] h = 1 2 3 4 5 6 7 8 9 >> k = [1 2;3 4 5] ??? Number of elements in each row must be the same.

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

  13. Square brackets Special matrix creation Concatenation: Combine two (or more) matrices into one Notation: C=[ A, B ] >> A=ones(2,2); >> B=zeros(2,2); >>C=[A , B] >>D=[A ; B] D = 1 1 1 1 0 0 0 0 C = 1 1 0 0 1 1 0 0

  14. Matrix indexation Row index Column index Obtain a single value from a matrix: Ex: want to know a21 Notation: A(2,1) >> A=[1 2 3; 3 2 1; 1 2 4]; >> A(2,1) ans = 3 >> A(3,2) ans = 2

  15. Row 1 to 3 Colon Column 2 to 3 Row 2, ALL columns Matrix indexation Obtain more than one value from a matrix: Ex: X=1:10 Notation: A(1:3,2:3) Colon defines a “range”: 1 to 10 Colon can also be used as a “wildcard” >> A=[1 2 3; 3 2 1; 1 2 4]; >> B=A(1:3,2:3) B = 2 3 2 1 2 4 >> C=A(2,:) C = 3 2 1

  16. Matrix size

  17. Matrix size >> 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 >> A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> s = size(A) s = 2 3 >> [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 >> A=zeros(2,3) A = 0 0 0 0 0 0 >> B=ones(2,2) B = 1 1 1 1 >> C=eye(2,2) C = 1 0 0 1 >> D=rand(3,2) D = 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621

  19. Operations on vectors and matrices in Matlab “single quote”

  20. Array Operations Scalar-Array Mathematics Addition, subtraction, multiplication, and division of an array by a scalar simply apply the operationto all elements of the array. >> f = [1 2 3; 4 5 6] f = 1 2 3 4 5 6 >> g = 2*f -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 applyon an element-by-element basis. OperationAlgebraic Form Matlab Addition a + b a + b Subtraction a − ba - b Multiplication a x b a.*b Division a / b a./b Exponentiation aba.^b

  22. Array Operations M M N N M N MATRIX Addition (substraction)

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

  24. Array Operations Element-by-Element Array-Array Mathematics >> A = [2 5 6]; >> B = [2 3 5]; >> C = A.*B C = 4 15 30 >> D = A./B D = 1.0000 1.6667 1.2000 >> E = A.^B E = 4 125 7776 >> F = 3.0.^A F = 9 243 729

  25. Array Operations M M N N NOTATION “dot” M “multiply” N 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, denotedby C = AB Element cijis the inner product of row i of A and column j of B Note that AB ≠ BA

  28. Array Operations Column 1 Row 1 M1 M2 N1 N2 N1=M2 NOTATION M1 N2 “multiply” Matrix Multiplication Cell 1-1

  29. Array Operations 1x1 + 2x3 +3x3 1x2 + 2x2 +3x1 1x3 + 2x1 +3x2 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 First, write a matrix with all the (xyz) coefficients Write a matrix with all the constants Finally, consider the matrix of unknowns 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 Ix 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 Formula for a 2x2 matrix: 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| ordet(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 Example: Matrices properties Property of inverse : A x A-1 = I and A-1xA = I Property of identity matrix: I x A = A and Ax I = A

  37. Solving systems of equations in Matlab x + 6y + 7z =0 2x + 5y + 8z =1 3x + 4y + 5z =2 In Matlab: >> A=[ 1 6 7; 2 5 8; 3 4 5] >> B=[0;1;2]; >> S=inv(A)*B Verification: >> det(A) ans = 28 >> 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: >> A=[ 1 6 7; 2 5 8; 3 4 5] >> B=[0;1;2]; >> S=inv(A)*B Verification: >> det(A) ans = 0 Warning: Matrix is singular to working precision. >> S = NaN NaN NaN NO Solution!!!!!

  39. y F1 7N 20o 60o x 30o 80o 5N F2 Applications in mechanical engineering Find the value of the forces F1and F2

  40. y F1 7N 20o 60o x 80o 30o 5N F2 Applications in mechanical engineering Projections on the X axis F1 cos(60) + F2 cos(80) – 7 cos(20) – 5 cos(30) = 0

  41. y F1 7N 20o 60o x 80o 30o 5N F2 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: >> CF=pi/180; >> A=[cos(60*CF), cos(80*CF) ; sin(60*CF), –sin(80*CF)]; >> B=[7*cos(20*CF)+5*cos(30*CF) ; -7*sin(20*CF)+5*sin(30*CF) ] >> F= inv(A)*Bor (A\B) Solution: F1= 16.7406 N F2= 14.6139 N F = 16.7406 14.6139

More Related