chapter 2 numeric, cell, and structure arrays

76
Chapter 2 Numeric, Cell, and Structure Arrays

Upload: hilda-whitehead

Post on 02-Jan-2016

81 views

Category:

Documents


5 download

DESCRIPTION

Chapter 2 Numeric, Cell, and Structure Arrays. Physics Connection - Specification of a position vector using Cartesian coordinates. Figure 2.1–1. 2-2. The vector p can be specified by three components: p =x i + y j + z k = [x, y, z]. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 2 Numeric, Cell, and Structure Arrays

Chapter 2Numeric, Cell, and Structure Arrays

Page 2: Chapter 2 Numeric, Cell, and Structure Arrays

Physics Connection - Specification of a position vector using Cartesian coordinates.

Figure 2.1–1

2-22-2

The vector p can be specified by three components:

p =x i + y j + z k = [x, y, z].

Generally, MATLAB vector is any list of ordered scalars

T = [ 75 77 76 ….. 69]

- 24 temperatures throughout the day, measured every hour

Page 3: Chapter 2 Numeric, Cell, and Structure Arrays

To create a row vector, separate the elements by commas. For example,

>>p = [3,7,9] % or just [ 3 7 9 ]p = 3 7 9

You can create a column vector by using the transpose notation (').

>>p = [3,7,9]'p = 3 7 9

2-3

Page 4: Chapter 2 Numeric, Cell, and Structure Arrays

You can also create a column vector by separating the elements by semicolons.

For example,

>>g = [3;7;9]g = 3 7 9

Another way is to just type in rows:g = [ 3 7 9 ]

2-42-4

Page 5: Chapter 2 Numeric, Cell, and Structure Arrays

2-52-5

You can create vectors by ''appending'' one vector to another.

For example, to create the row vector u whose first three columns contain the values of r = [2,4,20] and whose fourth, fifth, and sixth columns contain the values of w = [9,-6,3], you type

u = [r , w]

The result is the vector

u = [2,4,20,9,-6,3].

NO need for special merge operations etc…

Page 6: Chapter 2 Numeric, Cell, and Structure Arrays

The colon operator (:) easily generates a large vector of regularly spaced elements.

Typing

>>x = [m:q:n]

creates a vector x of values with a spacing q.

The first value is m.

The last value is n if m - n is an integer multiple of q.

If not, the last value is < n.

2-62-6

Page 7: Chapter 2 Numeric, Cell, and Structure Arrays

For example, typing x = [0:2:8] creates the vector: x = [0,2,4,6,8], whereas typing x = [0:2:7] creates the vector x = [0,2,4,6].Can also tryx = 10: -3: 1 producesx = [ 10 7 4 1]

To create row vector z consisting of the values from 5 to 8 in steps of 0.1, type z = 5:0.1:8

If the increment q is omitted, it is presumed to be 1. Thus typing y = [-3:2] produces the vector y = [-3,-2,-1,0,1,2].

In class:

Generate a vector from -1.5 to 3.7 with 0.2 spacing

2-7

Page 8: Chapter 2 Numeric, Cell, and Structure Arrays

The linspace command also creates a linearly spaced row vector, but instead you specify the number of values rather than the increment.

The syntax is linspace(x1,x2,n), where x1 and x2 are the lower and upper limits and n is the number of points.

For example, linspace(5,8,31) % note not 30, but 31is equivalent to [5:0.1:8].

If n is omitted, the spacing is 1.

In class: generate vector from -10 to 100 with 14 elements

2-82-8

Page 9: Chapter 2 Numeric, Cell, and Structure Arrays

The logspace command creates an array of logarithmically spaced elements.

Its syntax is logspace(a,b,n), where n is the number of points between 10a and 10b.

For example, x = logspace(-1,1,4) produces the vector x = [0.1000, 0.4642, 2.1544, 10.000].

If n is omitted, the number of points defaults to 50.

2-9 More? See pages 71-73.

Page 10: Chapter 2 Numeric, Cell, and Structure Arrays

Magnitude, Length, and Absolute Value of a Vector The length command gives the number of elements in the vector.

The magnitude of a vector x having elements x1, x2, …, xn is a scalar,

given by x1

2 + x22 + … + xn

2),

and is the same as the vector's geometric length.

For 2 variables x and y in plane this is just Pythagorean Theorem

The absolute value of a vector x is a vector whose elements are the absolute values of the elements of x. [ |x1|, |x2|, |x3|, ….. |xn| ]

2-102-10

Page 11: Chapter 2 Numeric, Cell, and Structure Arrays

For example, if x = [2,-4,5],

its length is 3; (computed from length(x))

its magnitude is [22 + (–4)2 + 52] = 6.7082; (computed from sqrt(x’*x) or norm(x))

its absolute value is [2,4,5] (computed from abs(x)) - absolute values of elements

In class: y = [ -3 1 8 5], find length, magnitude and absolute value

2-11 More? See page 79.

Page 12: Chapter 2 Numeric, Cell, and Structure Arrays

Matrices

A matrix has multiple rows and columns.

For example, the matrix

has four rows and three columns.

Elements are accessed by M(row, col)

Vectors are special cases of matrices having one row or one column.

M = 2 4 10 16 3 7 8 4 9 3 12 15

2-12 More? See page 73.

Page 13: Chapter 2 Numeric, Cell, and Structure Arrays

Creating Matrices If the matrix is small you can type it row by row, separating the elements in a given row with spaces or commas and separating the rows with semicolons. For example, typing

>>A = [2,4,10;16,3,7];

creates the following matrix:

2 4 10 16 3 7

Remember:• spaces or commas separate elements in different columns• semicolons separate elements in different rows.

A =

2-132-13

Page 14: Chapter 2 Numeric, Cell, and Structure Arrays

Creating Matrices from Vectors

Suppose a = [1,3,5] and b = [7,9,11] (row vectors).

Note the difference between the results given by [a b] and [a;b] in the following session:

>>c = [a b];c = 1 3 5 7 9 11 % single row>>D = [a;b]D = 1 3 5 % forms a matrix 7 9 11

2-142-14

Page 15: Chapter 2 Numeric, Cell, and Structure Arrays

Adjoining a column to a Adjoining a column to a matrix:matrix:

A = [ 1 2 3 7 4 5 6 9 7 8 9 11]newcol = [ 10 11 12 ]Anewcol = [A newcol]

Page 16: Chapter 2 Numeric, Cell, and Structure Arrays

Matrix TransposeMatrix TransposeA = [ 1 2 3 7 4 5 6 9 7 8 9 11]Atransposed = A'Atransposed = A'Atransposed =Atransposed = 1 4 71 4 7 2 5 82 5 8 3 6 93 6 9 7 9 117 9 11If If A'A' = A – symmetric matrix (only square matrix may be = A – symmetric matrix (only square matrix may be

symmetricsymmetricFor complex matrices, it produces For complex matrices, it produces complex conjugatecomplex conjugate

transpose.transpose.

Page 17: Chapter 2 Numeric, Cell, and Structure Arrays

Array Addressing

Array indices are the row and column numbers in that order.v(3) – 3rd element of array v. A(3,4) 3rd row 4th column element in matrix A

The colon operator selects individual elements, rows, columns, or ''sub-arrays'' of arrays. Here are some examples: 

v(:) represents all the row or column elements of the vector v.

v(2:5) represents the second through fifth elements; that is v(2), v(3), v(4), v(5). v(2:end) -- 2nd to the end

A(:,3) denotes all the elements in the third column of matrix A.

A(:,2:5) denotes all the elements in the second through fifth columns of A.

A(2:3,1:3) denotes all the elements in the second and third rows that are also in the first through third columns. 

Page 18: Chapter 2 Numeric, Cell, and Structure Arrays

You can use array indices to extract a smaller array from another array. For example, if you first create the array B

B =

2-172-17

C =16 3 7 8 4 9

2 4 10 1316 3 7 18 8 4 9 25 3 12 15 17

then type C = B(2:3,1:3), you can produce the following array:

More? See pages 75-76.

B(2 , :)=[16 3 7 18]

B(: , 3) = [ 10 7 9 15 ]

Page 19: Chapter 2 Numeric, Cell, and Structure Arrays

M = [ ] creates empty (null) matrix

Rows and columns can be deleted by assigning [ ]

For example:

A(:,4) = [ ] – delete entire 4th column

A(3:5,:) = [ ] – delete 3rd , 4th , and 5th rows of A

A([3 5],:) = [ ] – delete 3rd and 5th rows of A

Page 20: Chapter 2 Numeric, Cell, and Structure Arrays

>> A = [ 1 2>> A = [ 1 2 3 4 ]3 4 ]A =A = 1 21 2 3 43 4>> A(1,4) = 5 % expands matrix automatically>> A(1,4) = 5 % expands matrix automaticallyA =A = 1 2 0 51 2 0 5 3 4 0 03 4 0 0

Matrix does Matrix does not accept negative or zero indices, not accept negative or zero indices, but can use negative but can use negative increments in colon operator.increments in colon operator.

A(:, 4:-1:1) – reverse the columnsA(:, 4:-1:1) – reverse the columns5 0 2 15 0 2 10 0 4 30 0 4 3

Always use Always use clear allclear all in the beginning of a script to avoid reusing in the beginning of a script to avoid reusing array with wrong dimention or some other previous informationarray with wrong dimention or some other previous information

Page 21: Chapter 2 Numeric, Cell, and Structure Arrays

Additional Array Functions (Table 2.1–1)

[u,v,w] = find(A)

length(A)

Computes the arrays u and v, containing the row and column indices of the nonzero elements of the matrix A, and the array w, containing the values of the nonzero elements.

The array w may be omitted.-- useful for sparse matrices

Computes either the number of elements of A if A is a vector or the largest value of m or n if A is an m × n matrix.

2-18

A = [ 2 0 3 0 0 0 8 0 3 0]u = 1 2 1 2 % nonzero rowsv = 1 2 3 4 % nonzero colsw = 2 8 3 3 % nonzero elements

A = [ 2 0 3 0 0 0 8 0 3 0]u = 1 2 1 2 % nonzero rowsv = 1 2 3 4 % nonzero colsw = 2 8 3 3 % nonzero elements

Page 22: Chapter 2 Numeric, Cell, and Structure Arrays

Additional Array Functions (Table 2.1–1)

max(A) Returns the algebraically largest element in A if A is a vector.

Returns a row vector containing the largest elements in each column if A is a matrix.

If any of the elements are complex, max(A) returns the elements that have the largest magnitudes.

2-19

If A=[ 7 3 6 0] - vectormax(A) = 7

If A = [ 2 0 3 0 0 0 8 0 3 0] – matrix

max(A) = [ 2 8 3 3 0 ]

Page 23: Chapter 2 Numeric, Cell, and Structure Arrays

Additional Array Functions (Table 2.1–1)

[x,k] = max(A)

min(A)and

[x,k] = min(A)

Similar to max(A) but stores the maximum values in the row vector x and their indices in the row vector k.

Like max but returns minimum values.

2-20

Page 24: Chapter 2 Numeric, Cell, and Structure Arrays

The function size(A) returns a row vector [m n] containing the sizes of the m × n array A.

The length(A) function computes either the number of elements of A if A is a vector or the largest value of m or n if A is an m × n matrix.

For example, if

then size(A) returns [3, 2]; length(A) returns 3,

max(A) returns the vector [6,2] – largest elements in each column;

min(A) returns the vector [-10, -5] - smallest elements in each column

In class: Ch2 #5, also find A(1:3,2:4), A(:,3:4)

A = 6 2 –10 –5 3 0

2-222-22 More? See pages 78-79.

Page 25: Chapter 2 Numeric, Cell, and Structure Arrays

sum – sums elements in an array and column by sum – sums elements in an array and column by column in a matrix.column in a matrix.

sort – sorts elements in ascending order and column sort – sorts elements in ascending order and column by column in a matrixby column in a matrix

A =A = 1 7 3 21 7 3 2 4 5 4 94 5 4 9 7 2 1 37 2 1 3sumA =sumA = 12 14 8 1412 14 8 14sortA =sortA = 1 2 1 21 2 1 2 4 5 3 34 5 3 3 7 7 4 97 7 4 9

Page 26: Chapter 2 Numeric, Cell, and Structure Arrays

The Workspace Browser. Figure 2.1–2

2-23 More? See pages 79-80.

Page 27: Chapter 2 Numeric, Cell, and Structure Arrays

The Array Editor. Figure 2.1–3double-click on the array variable to get to Array Editor

2-24 More? See pages 79-81.

Page 28: Chapter 2 Numeric, Cell, and Structure Arrays

Multidimensional Arrays - Multidimensional Arrays - optionaloptional

Consist of two-dimensional matrices Consist of two-dimensional matrices “layered” to produce a third dimension“layered” to produce a third dimension. . Each “layer” is called a Each “layer” is called a pagepage..Example of use – say temperature in a room with indices giving x, y, and z coordinates.Example of use – say temperature in a room with indices giving x, y, and z coordinates.

cat(n,A,B,C, ...) - creates a new array by concatenating the arrays A,B,C, and so on along the dimension n.

2-25

More? See pages 81-83.

>> A = [ 1 2 3 4 5 6]A = 1 2 3 4 5 6>> A(:,:,2) = [ 4 5 6 7 8 9]A(:,:,1) = 1 2 3 4 5 6A(:,:,2) = 4 5 6 7 8 9

>> A = [ 1 2 3 4 5 6]A = 1 2 3 4 5 6>> B = [ 4 5 6 7 8 9]B = 4 5 6 7 8 9

>> cat(3,A,B)ans(:,:,1) = 1 2 3 4 5 6ans(:,:,2) = 4 5 6 7 8 9>> cat(1,A,B)ans = 1 2 3 4 5 6 4 5 6 7 8 9>> cat(2,A,B)ans =

1 2 3 4 5 6 4 5 6 7 8 9

Page 29: Chapter 2 Numeric, Cell, and Structure Arrays

2-26

Vector addition by geometry. (a) The parallelogram law. (b) Addition of vectors in three

dimensions.

Page 30: Chapter 2 Numeric, Cell, and Structure Arrays

Array Addition and Subtraction

6 –210 3

+ 9 8–12 14

= 15 6 –2 17

Array subtraction is performed in a similar way.

The addition shown in equation 2.3–1 is performed in MATLAB as follows:

>>A = [6,-2;10,3];>>B = [9,8;-12,14]>>A+Bans = 15 6 -2 17

Arrays are added and subtracted element by element, for example:

2-272-27

(2.3-1)

More? See page 85.

Page 31: Chapter 2 Numeric, Cell, and Structure Arrays

2-28

Geometric interpretation of scalar multiplication of a vector.

Figure 2.3–1

If r = [x, y, z], then

v = 2r =

2[x, y, z] =

[2x, 2y, 2z].

element by element scalar multiplication

Page 32: Chapter 2 Numeric, Cell, and Structure Arrays

Multiplying a matrix A by a scalar w produces a matrix whose elements are the elements of A multiplied by w – again element by element. For example:

32 95 –7

= 6 2715 –21

This multiplication is performed in MATLAB as follows:

>>A = [2, 9; 5,-7];>>3*Aans = 6 27 15 -21

2-292-29

Page 33: Chapter 2 Numeric, Cell, and Structure Arrays

Multiplication of an array by a scalar is easily defined and easily carried out.

However, multiplication of two arrays is not so straightforward.

MATLAB uses two very different definitions of multiplication:

(1) array multiplication (element-by-element multiplication)

(2) matrix multiplication.

2-302-30

Page 34: Chapter 2 Numeric, Cell, and Structure Arrays

Division and exponentiation must also be carefully defined when you are dealing with operations between two arrays.

MATLAB has two forms of arithmetic operations on arrays.

Next we introduce one form, called array operations, which are also called element-by-element operations.

Then we will introduce matrix operations.

Each form has its own applications.

2-31

Page 35: Chapter 2 Numeric, Cell, and Structure Arrays

Element-by-element operations: Table 2.3–1

Symbol

+

-

+

-

.*

./

.\

.^

Examples

[6,3]+2=[8,5]

[8,3]-5=[3,-2]

[6,5]+[4,8]=[10,13]

[6,5]-[4,8]=[2,-3]

[3,5].*[4,8]=[12,40]

[2,5]./[4,8]=[2/4,5/8]

[2,5].\[4,8]=[2\4,5\8]

[3,5].^2=[3^2,5^2]

2.^[3,5]=[2^3,2^5]

[3,5].^[2,4]=[3^2,5^4]

Operation

Scalar-array addition

Scalar-array subtraction

Array addition

Array subtraction

Array multiplication

Array right division

Array left division

Array exponentiation

Form

A + b

A – b

A + B

A – B

A.*B

A./B

A.\B

A.^B

2-322-32

Page 36: Chapter 2 Numeric, Cell, and Structure Arrays

Array or Element-by-element multiplication is defined only for arrays having the same size.

The definition of the product x.*y, where x and y each have n elements, is

x.*y = [x(1)y(1), x(2)y(2), ... , x(n)y(n)]

if x and y are row vectors. For example, if

x = [2, 4, – 5], y = [– 7, 3, – 8] (2.3–4)

then z = x.*y gives z = [2(– 7), 4 (3), –5(–8)] = [–14, 12, 40]

2-332-33

Page 37: Chapter 2 Numeric, Cell, and Structure Arrays

If x and y are column vectors, the result of x.*y is a column vector. For example z = (x’).*(y’) gives

Note that x’ is a column vector with size 3 × 1 and thus does not have the same size as y, whose size is 1 × 3.

Thus for the vectors x and y the operations x’.*y and y.*x’ are not defined in MATLAB and will generate an error message.

2(–7)4(3)

–5(–8)

–141240

=z =

2-342-34

Page 38: Chapter 2 Numeric, Cell, and Structure Arrays

The array operations are performed between the elements in corresponding locations in the arrays.

For example, the array multiplication operation A.*B results in a matrix C that has the same size as A and B and has the elements ci j = ai j bi j .

For example, if

then C = A.*B gives this result:

A = 11 5 –9 4

B = –7 8 6 2

C = 11(–7) 5(8) –9(6) 4(2)

= –77 40–54 8

2-352-35 More? See pages 87-88.

NOT Matrix Multiplication

Page 39: Chapter 2 Numeric, Cell, and Structure Arrays

The built-in MATLAB functions such as sqrt(x) and exp(x) automatically operate on array arguments to produce an array result the same size as the array argument x - again element by element.

Thus these functions are said to be vectorized functions.

For example, in the following session the result y has the same size as the argument x.

>>x = [4, 16, 25];>>y = sqrt(x) % element by elementy = 2 4 5

2-362-36

Page 40: Chapter 2 Numeric, Cell, and Structure Arrays

However, when multiplying or dividing these functions, or when raising them to a power, you must use element-by-element operations if the arguments are arrays.

For example, to compute z = (ey sin x) cos2x, you must type

z = exp(y).*sin(x).*(cos(x)).^2.

You will get an error message if the size of x is not the same as the size of y.

The result z will have the same size as x and y.

2-37 More? See pages 89-90.

Page 41: Chapter 2 Numeric, Cell, and Structure Arrays

Array Division

The definition of array division is similar to the definition of array multiplication except that the elements of one array are divided by the elements of the other array (again element by element).

Both arrays must have the same size.

The symbol for array right division is ./

For example, if

x = [8, 12, 15] y = [–2, 6, 5]

then z = x./y gives

z = [8/(–2), 12/6, 15/5] = [–4, 2, 3]

2-382-38

Page 42: Chapter 2 Numeric, Cell, and Structure Arrays

A = 24 20– 9 4

B = –4 5 3 2

Also, if

then C = A./B gives

C = 24/(–4) 20/5 –9/3 4/2

= –6 4–3 2

2-39 More? See pages 91-92.

Page 43: Chapter 2 Numeric, Cell, and Structure Arrays

Array Exponentiation

MATLAB enables us not only to raise arrays to powers but also to raise scalars and arrays to array powers.

To perform exponentiation on an element-by-element basis, we must use the .^ symbol.

For example,

if x = [3, 5, 8],

then typing x.^3 produces the array

[33, 53, 83] = [27, 125, 512].

2-402-40

Page 44: Chapter 2 Numeric, Cell, and Structure Arrays

We can raise a scalar to an array power.

For example, if p = [2, 4, 5], then typing 3.^p produces the array [32, 34, 35] = [9, 81, 243].

Remember that .^ is a single symbol.

The dot in 3.^p is not a decimal point associated with the number 3.

The following operations, with the value of p given here, are equivalent and give the correct answer:

3.^p3.0.^p3..^p % correct, but confusing => avoid it(3).^p3.^[2,4,5]

In class: Ch2 T2.3-1 p93

2-412-41 More? See pages 92-95.

Page 45: Chapter 2 Numeric, Cell, and Structure Arrays

Matrix OperationsMatrix Operations

- see notes on dot product and - see notes on dot product and matrix vector multiplicationmatrix vector multiplication

Page 46: Chapter 2 Numeric, Cell, and Structure Arrays

Matrix-Matrix Multiplication

In the product of two matrices A*B, the number of columns in A must equal the number of rows in B.[C - m by p matrix] = [A - m by n matrix] times [B -n by p matrix]

The row-column multiplications form column vectors, and these column vectors form the matrix result.

The product AB has the same number of rows as A and the same number of columns as B.

For ex: 6 –2 10 3 4 7

9 8–5 12

= (6)(9) + (– 2)(– 5) (6)(8) + (– 2)(12) (10)(9) + (3)(– 5) (10)(8) + (3)(12) (4)(9) + (7)(– 5) (4)(8) + (7)(12)

64 24 75 116 1 116

= (2.4–4)

2-422-42

Product of 3 by 2 matrix and 2 by 2 matrix => get 3 by 2 matrix

Page 47: Chapter 2 Numeric, Cell, and Structure Arrays

Use the operator * to perform matrix multiplication in MATLAB. NOT .*

The following MATLAB session shows how to perform the matrix multiplication shown in (2.4–4).

>>A = [6,-2;10,3;4,7];>>B = [9,8;-5,12];>>A*Bans = 64 24 75 116 1 116

2-432-43

Page 48: Chapter 2 Numeric, Cell, and Structure Arrays

Matrix multiplication does not have the commutative property; that is, in general, ABBA.

A simple example will demonstrate this fact:

AB = 6 –210 3

9 8–12 14

= 78 2054 122

(2.4–6)

BA = 9 8–12 14

6 –210 3

= 134 6 68 65 (2.4–7)

whereas

2-442-44 More? See pages 97-104.

Page 49: Chapter 2 Numeric, Cell, and Structure Arrays

More multipicationsMore multipications>> x = [ 1>> x = [ 1 22 3] % column vector3] % column vectorx =x = 11 22 33>> y = [ 4 5 6] % row vector>> y = [ 4 5 6] % row vectory =y = 4 5 64 5 6>> x*y % 3 by 1 >> x*y % 3 by 1 timestimes 1 by 3 get 3 1 by 3 get 3

by 3by 3ans =ans = 4 5 6 % outer product4 5 6 % outer product 8 10 128 10 12 12 15 1812 15 18>> y*x % 1 by 3>> y*x % 1 by 3 times times 3 by 1 get 1 3 by 1 get 1

by 1 by 1 ans =ans = 32 % inner product32 % inner product

See Manufacturing Cost Examplein the notes

Page 50: Chapter 2 Numeric, Cell, and Structure Arrays

Special Matrices ( type help specmat )

Two exceptions to the non-commutative property are the null or zero matrix, denoted by 0 and the identity, or unity, matrix, denoted by I.

The null matrix contains all zeros and is not the same as the empty matrix [ ], which has no elements.

These matrices have the following properties:

0A = A0 = 0 – just get all zeros

IA = AI = A

2-452-45

Page 51: Chapter 2 Numeric, Cell, and Structure Arrays

The identity matrix is a square matrix whose diagonal elements are all equal to one, with the remaining elements equal to zero.

For example, the 2 × 2 identity matrix is

I = 1 00 1

The functions eye(n) and eye(size(A)) create an n × n identity matrix and an identity matrix the same size as the matrix A.

2-46 More? See page 105.

Page 52: Chapter 2 Numeric, Cell, and Structure Arrays

Sometimes we want to initialize a matrix to have all zero elements. The zeros command creates a matrix of all zeros.

Typing zeros(n) creates an n × n matrix of zeros, whereas typing zeros(m,n) creates an m × n matrix of zeros.

Typing zeros(size(A)) creates a matrix of all zeros having the same dimension as the matrix A. This type of matrix can be useful for applications in which we do not know the required dimension ahead of time, but need to initialize the matrix to all zeros.

The syntax of the ones command is the same, except that it creates arrays filled with ones.In class: T2.4-1&2, p100

2-472-47 More? See pages 105-106.

Page 53: Chapter 2 Numeric, Cell, and Structure Arrays

Matrix ExponentiationMatrix Exponentiation

A^n = A*A*A … *A - n times A^n = A*A*A … *A - n times (not (not ..^)^)Matrix A has to be square.Matrix A has to be square.

>> A = [ 1 2>> A = [ 1 2 3 4 ]3 4 ]A =A = 1 21 2 3 43 4>> A^7>> A^7ans =ans = 30853 4496630853 44966 67449 9830267449 98302

Page 54: Chapter 2 Numeric, Cell, and Structure Arrays

Dot and Cross ProductsDot and Cross Products>> x = [ 1 2 3]>> x = [ 1 2 3]x =x = 1 2 31 2 3>> y = [ 8 -2 4]>> y = [ 8 -2 4]y =y = 8 -2 48 -2 4>> cross(x,y) % cross product -- vector orthogonal to x and >> cross(x,y) % cross product -- vector orthogonal to x and

yyans =ans = 14 20 -1814 20 -18>> dot(x,y) % dot product -- the answer is a scalar>> dot(x,y) % dot product -- the answer is a scalarans =ans = 1616>> >>

Page 55: Chapter 2 Numeric, Cell, and Structure Arrays

Polynomial Multiplication and Division - optional

The polynomial above is entered into Matlab as:>a = [ a1 a2 a(n+1)], if any power is missing have to put in 0

To add or subtract two polynomials, just add or subtract their arrays, but have to pad it with 0’s:

2-48

Page 56: Chapter 2 Numeric, Cell, and Structure Arrays

Multiplying and Dividing Multiplying and Dividing Polynomials Polynomials - optional

The function conv(a,b) computes the product of the two polynomials described by the coefficient arrays a and b.

The two polynomials need not be the same degree. The result is the coefficient array of the product polynomial.

The function [q,r] = deconv(num,den) computes the result of dividing a numerator polynomial, whose coefficient array is num, by a denominator polynomial represented by the coefficient array den. The quotient polynomial is given by the coefficient array q, and the remainder polynomial is given by the coefficient array r.

Note that we do NOT need adding extra zeros like in summation

Page 57: Chapter 2 Numeric, Cell, and Structure Arrays

Polynomial Multiplication and Division: Examples - optional

>>a = [9,-5,3,7]; % corresponds to 9x^3 - 5x^2 + 3x + 7>>b = [6,-1,2]; % corresponds to 6x^2 – x + 2

>>product = conv(a,b)product = 54 -39 41 29 -1 14% 54x^5 – 39x^4 + 41x^3 + 29x^2 – x + 14

>>[quotient, remainder] = deconv(a,b)quotient = 1.5 -0.5833 % 1.5x - 0.5833

remainder = 0 0 -0.5833 8.1667 % -0.5833 x + 8.1667

2-492-49 More? See pages 107-109.

Page 58: Chapter 2 Numeric, Cell, and Structure Arrays

Polynomial RootsPolynomial Roots

The functionThe function roots(a)computes the roots of a polynomial specified by the coefficient array a.

The result is a column vector that contains the polynomial’s roots.

For example,

>>r = roots([2, 14, 20]) % 2x^2+14x+20=0r = -2 -5

2-50 More? See page 107.

Page 59: Chapter 2 Numeric, Cell, and Structure Arrays

Polynomial CoefficientsPolynomial Coefficients

The functionThe function poly(r)computes the coefficients of the polynomial whose roots are specified by the vector r. The result is a row vector that contains the polynomial’s coefficients arranged in descending order of power.

For example,

>>c = poly([-2, -5])c = 1 7 10 % corresponds to x^2 + 7x + 10

2-51 More? See page 107.

Page 60: Chapter 2 Numeric, Cell, and Structure Arrays

Plotting Polynomials

The function polyval(a,x)evaluates a polynomial at specified values of its independent variable x, which can be a matrix or a vector.

The polynomial’s coefficients of descending powers are stored in the array a.

The result is the same size as x.

2-52

Page 61: Chapter 2 Numeric, Cell, and Structure Arrays

Example of Plotting a Polynomial

To plot the polynomial f (x) = 9x3 – 5x2 + 3x + 7 for –2 ≤ x ≤ 5, you type

>>a = [9,-5,3,7]; % - polynomial coefficients>>x = [-2:0.01:5]; % - densely spaced x values>>f = polyval(a,x);>>plot(x,f),xlabel(’x’),ylabel(’f(x)’)

In class: T2.5-1,2,3,& 5. p111

2-532-53 More? See pages 109-110.

Page 62: Chapter 2 Numeric, Cell, and Structure Arrays

Simple vibration model of a building subjected to ground motion - skip.

Figure 2.5–1

Buildings designed to withstand earthquakes must have natural frequencies of vibration that are NOT close to the natural frequency of the ground motions to prevent deadly resonances.

Building’s natural frequencies are determined bymasses of floors and by lateral stiffness of the supporting columns.They are roots of the characteristic polynomial.

>> k = 7e6; m = 1000;>> alpha = k/(4*pi^2*m);>> p1 = [ -1 0 alpha];>> p2 = [ -1 0 2*alpha];>> p3 = [ alpha^2 0 -2*alpha^3];>> p4 = conv(p2,p2)-[ 0 0 0 0 alpha^2];>> p5 = conv(p1,p4);>> p6 = p5 + [ 0 0 0 0 p3];>> p6

p6 = Columns 1 through 6 -1 0 886.56 0 -1.8864e+005 0 Column 7 5.5746e+006>> r = roots(p6)r = 23.994 -23.994 16.605 -16.605 5.9261 -5.9261>> pos = r (r>0)pos = 23.994 16.605 5.9261

Page 63: Chapter 2 Numeric, Cell, and Structure Arrays

Function

C = cell(n)

C = cell(n,m)

celldisp(C)

cellplot(C)

C = num2cell(A)

[X,Y, ...] = deal(A,B, ...)

[X,Y, ...] = deal(A)

iscell(C)

Description

Creates an n × n cell array C of empty matrices.

Creates an n × m cell array C of empty matrices.

Displays the contents of cell array C.

Displays a graphical representation of the cell array C.

Converts a numeric array A into a cell array C.

Matches up the input and output lists. Equivalent toX = A, Y = B, . . . .

Matches up the input and output lists. Equivalent toX = A, Y = A, . . . .

Returns a 1 if C is a cell array; otherwise, returns a 0.

Cell array functions. Table 2.6–1 - Skip!

2-542-54 More? See pages 112-117.

Page 64: Chapter 2 Numeric, Cell, and Structure Arrays

Structures - optionalStructures allow to store arrays of different type and size together.

The elements are accessed using named fields with dot operator:

student.name =‘John Smith’; student.SSN = ‘392-77-1786’; student.tests = [67 75 84]

Arrays of Structures – just add index to student:

student(2).name = ‘Mary Jones’; student(2).SSN = ‘431-56-9832’; …

To reassign test 2 of Mary Jones: student(2).tests(2) = 85

2-552-55

Figure 2.7–1

Page 65: Chapter 2 Numeric, Cell, and Structure Arrays

Function

names = fieldnames(S)

F = getfield(S,’field’)

isfield(S,’field’)

DescriptionReturns the field names associated with the structure array S as names, strings.Returns the contents of the field ’field’ in the structure array S. Equivalent to F = S.field - better.

Returns 1 if ’field’ is the name of a field in the structure array S, and 0 otherwise.

Structure functions Table 2.7–1

2-562-56

Page 66: Chapter 2 Numeric, Cell, and Structure Arrays

Structure functions Table 2.7–1 (continued)

S = rmfield(S,’field’)

S = setfield(S,’field’,V)

S = struct(’f1’,’v1’,’f2’,’v2’,...)

Removes the field ’field’ from the structure array S.

Sets the contents of the field ’field’ to the value V in the structure array S.

Better to use dot!

Creates a structure array with the fields ’f1’, ’f2’, . . . having the values ’v1’, ’v2’, . . . .

2-57 More? See pages 117-123.

In class: T2.7-1,2,3, p123

Page 67: Chapter 2 Numeric, Cell, and Structure Arrays

The remaining slides are figures from the chapter and its homework problems.

2-58

Page 68: Chapter 2 Numeric, Cell, and Structure Arrays

Plot for Example 2.3–6.

Figure 2.3–5

2-592-59

Page 69: Chapter 2 Numeric, Cell, and Structure Arrays

2-60

Figure 2.3–3

Page 70: Chapter 2 Numeric, Cell, and Structure Arrays

Aortic pressure response for Example 2.3–3.

Figure 2.3–4

2-612-61

Page 71: Chapter 2 Numeric, Cell, and Structure Arrays

Figure P20

2-632-63

Page 72: Chapter 2 Numeric, Cell, and Structure Arrays

Figure P24

2-642-64

Page 73: Chapter 2 Numeric, Cell, and Structure Arrays

Figure P26

2-652-65

Page 74: Chapter 2 Numeric, Cell, and Structure Arrays

Figure P35

2-662-66

Page 75: Chapter 2 Numeric, Cell, and Structure Arrays

Figure 36

2-672-67

Page 76: Chapter 2 Numeric, Cell, and Structure Arrays

Figure P44

2-682-68