cse123 lecture 5 arrays and array operations. definitions scalars: variables that represent single...
TRANSCRIPT
CSE123 CSE123
Lecture Lecture 55
Arrays and Array OperationsArrays and Array Operations
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.
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.
>>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.9511Columns 8 through 110.8090 0.5878 0.3090 0.0000
Vector Addressing / indexation
• A vector element is addressed in Matlab with an integer index (also called a subscript) enclosed in 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, a shortened 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
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
• Extending: Additional values can be added using a reference to a specific address.
>> S(2) = -1.0;>> SS =3.0000 -1.0000 3.1000
>> S(4) = 5.5;>> SS =3.0000 -1.0000 3.1000 5.5000
>> S(7) = 8.5;>> SS =3.0000 -1.0000 3.1000 5.5000 0 0 8.5000
Vector Creation Alternatives
• Colon notation: (start:increment:end)
where start, increment, and end can now be floating point numbers.
x=(0:0.1:1)*pix =Columns 1 through 70 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850Columns 8 through 112.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)
1
number
startendincrement
The increment is computed internally, having the value:
Vector Creation Alternatives
>> x=linspace(0,pi,11)x =Columns 1 through 70 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850Columns 8 through 112.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 71.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489Columns 8 through 1125.1189 39.8107 63.0957 100.0000
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
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:
>> c = [1;2;3;4;5]c =12345
The transpose operator (’) is used to transpose a row vector into a column vector
>> a = 1:5a =1 2 3 4 5>> c = a’c =12345
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 ];
C= [ 5 ; 6 ; 7 ];
321A
43
21B
7
6
5
C
B= [ 1 2 ; 3 4 ];
A= [ 1, 2, 3 ];
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.
>> h = [1 2 34 5 67 8 9]h =1 2 34 5 67 8 9
>> k = [1 2;3 4 5]??? Number of elements in each row must be the same.
>>f = [1 2 3; 4 5 6]f =1 2 34 5 6
>> g = f’g =1 42 53 6
Manipulations and Combinations:
>> A=10*ones(2,2)A = 10 10
10 10
Special matrix creation
>> B=10*rand(2,2)
Matrix full of 10:
Matrix of random numbers between 0 and 10
B = 4.5647 8.2141
0.1850 4.4470
>> C= -rand(2,2)Matrix of random numbers between -1 and 0
C = -0.4103 -0.0579
-0.8936 -0.3529
>> C=2*rand(2,2) –ones(2,2)
>> C=2*rand(2,2) -1
Matrix of random numbers between -1 and 1
C = -0.6475 0.8709
-0.1886 0.8338
Concatenation: Combine two (or more) matrices into one
Special matrix creation
Notation:
C=[ A, B ]
Square bracketsSquare
brackets
>> 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
Obtain a single value from a matrix:
Ex:
want to know a21
Matrix indexation
421
123
321
A
Notation:
A(2,1)
Row indexRow index Column indexColumn index
>> A=[1 2 3; 3 2 1; 1 2 4];
>> A(2,1)
ans =
3
>> A(3,2)
ans =
2
Obtain more than one value from a matrix:
Ex: X=1:10
Matrix indexation
>> 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
ColonColon
Colon defines a “range”: 1 to 10
Notation:
A(1:3,2:3)
Row 1 to 3Row 1 to 3
Column 2 to 3Column 2 to 3
Colon can also be used as a “wildcard”
Row 2, ALL columns
Row 2, ALL columns
421
123
321
A
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.
Matrix size
>> A = [1 2 3; 4 5 6]A =1 2 34 5 6
>> s = size(A)s =2 3
>> [r,c] = size(A)r =2c =3
>> whosName Size Bytes ClassA 2x3 48 double arrayans 1x1 8 double arrayc 1x1 8 double arrayr 1x1 8 double arrays 1x2 16 double array
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
>> D=rand(3,2) D = 0.9501 0.4860
0.2311 0.8913
0.6068 0.7621
Special matrix creation
>> C=eye(2,2) C = 1 0
0 1
Operations on vectors and matrices in Matlab
Math Matlab
Addition/subtraction A+B
A-B
Multiplication/ division (element by element)
A.*B
A./B
Multiplication(Matrix Algebra)
A*B
Transpose: AT A’
Inverse: A-1 inv(A)
Determinant: |A| det(A)
“single quote”“single quote”
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.
>> f = [1 2 3; 4 5 6]f =1 2 34 5 6>> g = 2*f -1g =1 3 57 9 11
Array Operations
Element-by-Element Array-Array MathematicsWhen 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 + bSubtraction a − b a - bMultiplication a x b a.*bDivision a / b a./bExponentiation ab a.^b
333231
232221
131211
aaa
aaa
aaa
A
333231
232221
131211
bbb
bbb
bbb
B
333332323131
232322222121
131312121111
bababa
bababa
bababa
BA
MATRIX Addition (substraction)
M
N
M
N
M
N
Array Operations
987
654
321
A
BA
Examples: Addition & Subtraction
987
654
321
B
2 4 6
8 10 12
14 16 18
BA
0 0 0
0 0 0
0 0 0
Array Operations
Array Operations
Element-by-Element Array-Array Mathematics
>> A = [2 5 6];>> B = [2 3 5];>> C = A.*BC =4 15 30
>> D = A./BD =1.0000 1.6667 1.2000
>> E = A.^BE =4 125 7776
>> F = 3.0.^AF =9 243 729
333231
232221
131211
aaa
aaa
aaa
A
333231
232221
131211
bbb
bbb
bbb
B
333332323131
232322222121
131312121111
bababa
bababa
bababa
BA
MATRIX Multiplication (element by element)
M
N
BA
M
N
M
N
“dot”
“multiply”
NOTATION
Array Operations
987
654
321
A
BA
Examples: Multiplication & Division (element by element)
987
654
321
B
1 4 9
16 25 36
49 64 81
B/A
1 1 1
1 1 1
1 1 1
Array Operations
Array Operations
The matrix multiplication of m x n matrix A and nxp matrix B yields m x p matrix C, denoted byC = AB
Element cij is the inner product of row i of A and column j of B
n
kkjikij bac
1
Note that AB ≠ BA
Matrix Multiplication
333231
232221
131211
aaa
aaa
aaa
A
333231
232221
131211
bbb
bbb
bbb
B
333323321331323322321231313321321131
332323221321322122221221312321221121
331323121311321322121211
bababababababababa
bababababababababa
babababababa
BA
Matrix Multiplication
Row 1
Colum
n 1
Cell 1-1
311321121111 bababa
BA
“multiply”
NOTATION
M1
N1
M2
N2
M1
N2
N1=M2
Array Operations
213
123
321
A
BA
Example: Matrix Multiplication
16 9 11
12 11 13
12 10 14
213
123
321
B
1x1 + 2x3 +3x31x2 + 2x2 +3x11x3 + 2x1 +3x2
Array Operations
Solving systems of linear equations
Example: 3 equations and 3 unknown
1x + 6y + 7z =02x + 5y + 8z =13x + 4y + 5z =2
Can be easily solved by hand, but what can we do if it we have 10 or 100 equations?
Array Operations
Solving systems of linear equations
First, write a matrix with all the (xyz) coefficients
543
852
761
A
1x + 6y + 7z = 02x + 5y + 8z = 13x + 4y + 5z = 2
Write a matrix with all the constants
2
1
0
B
Finally, consider the matrix of unknowns
z
y
x
S
Array Operations
Solving systems of linear equations
A x S = B
A x S = BA-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
Array Operations
Solving systems of linear equations
1x + 6y + 7z =02x + 5y + 8z =13x + 4y + 5z =2
The previous set of equations can be expressed in the following vector-matrix form:
A x S = B
543
852
761
2
1
0
z
y
x
X
Array Operations
Matrix Determinant
Notation: Determinant of A = |A| or det(A)
•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.
det(M)= m11 m22 – m21 m12
2221
1211
mm
mmM
Formula for a 2x2 matrix:
IMPORTANT: the determinant of a matrix is a scalar
Array Operations
Matrix Inverse
Notation: inverse of A = A-1 or inv(A)
•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.
2221
1211
mm
mmM M-1=
Formula for a 2x2 matrix:
1121
1222
)det(
1
mm
mm
M
IMPORTANT: the inverse of a matrix is a matrix
Array Operations
Property of identity matrix:
I x A = Aand A x I = A
Matrices properties
Property of inverse : A x A-1 = I
and A-1 x A = I
Example:
100
010
001
2.04.08.0
2.06.02.0
6.02.04.0
x
102
121
211
Array Operations
x + 6y + 7z =02x + 5y + 8z =13x + 4y + 5z =2
543
852
761
A
2
1
0
B
z
y
x
S
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
Solving systems of equations in Matlab
>> S =
0.8571 -0.1429 0
x + 6y + 7z =02x + 5y + 8z =13x + 4y + 9z =2
943
852
761
A
2
1
0
B
z
y
x
S
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
NO Solution!!!!!
Solving systems of equations in Matlab
Warning: Matrix is singular to working precision.
>> S =
NaN NaN NaN
Applications in mechanical engineering
F1
F25N
7N
x
y
60o
30o
20o
80o
Find the value of the forces F1and F2
F1
F25N
7N
x
y
60o
30o
20o
80o
Projections on the X axis F1 cos(60) + F2 cos(80) – 7 cos(20) – 5 cos(30) = 0
Applications in mechanical engineering
F1
F25N
7N
x
y
60o
30o
20o
80o
Projections on the Y axis F1 sin(60) - F2 sin(80) + 7 sin(20) – 5 sin(30) = 0
Applications in mechanical engineering
F1 cos(60) + F2 cos(80) – 7 cos(20) – 5 cos(30) = 0F1 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:>> 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)*B or (A\B)
F = 16.7406 14.6139
In Matlab, sin and cos use radians, not degree
Solution: F1= 16.7406 NF2= 14.6139 N
Applications in mechanical engineering