Title: Numeric, Cell, and Structure Arrays
1Chapter 2 Numeric, Cell, and Structure Arrays
22-2
Physics Connection - Specification of a position
vector using Cartesian coordinates. Figure 2.11
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
3To create a row vector, separate the elements by
commas. For example, gtgtp 3,7,9 p 3
7 9 You can create a column vector by using
the transpose notation ('). gtgtp 3,7,9' p
3 7 9
2-3
42-4
You can also create a column vector by separating
the elements by semicolons. For example, gtgtg
379 g 3 7 9 Another way is to
just type in rows g 3 7 9
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
62-6
The colon operator () easily generates a large
vector of regularly spaced elements.
Typing gtgtx mqn 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 lt n.
7For example, typing x 028 creates the
vector x 0,2,4,6,8, whereas typing x
027 creates the vector x 0,2,4,6. Can
also try x 10 -3 1 produces x 10 7 4 1
To create row vector z consisting of the values
from 5 to 8 in steps of 0.1, type z
50.18. If the increment q is omitted, it is
presumed to be 1. Thus typing y -32
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
82-8
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) is
equivalent to 50.18. If n is omitted, the
spacing is 1. In class generate vector from -10
to 100 with 14 elements
9The 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.
More? See pages 71-73.
2-9
102-10
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 Ö(x12 x22 xn2), 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.
11- 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(xx)) - 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
More? See page 79.
2-11
12Matrices 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.
2 4 10 16 3 7 8 4
9 3 12 15
M
More? See page 73.
2-12
132-13
- 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
- gtgtA 2,4,1016,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
142-14
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 ab in the following session gtgtc a
b c 1 3 5 7 9 11 single row gtgtD
ab D 1 3 5 forms a matrix 7
9 11
15You need not use symbols to create a new array.
For example, you can type gtgt D
1,3,57,9,11 D 1 3 5 7
9 11
More? See pages 73 74.
2-15
16Adjoining a column to a matrix
- A 1 2 3 7
- 4 5 6 9
- 7 8 9 11
- newcol 10
- 11
- 12
- Anewcol A newcol
17Matrix Transpose
- A 1 2 3 7
- 4 5 6 9
- 7 8 9 11
- Atransposed A'
- Atransposed
- 1 4 7
- 2 5 8
- 3 6 9
- 7 9 11
- If A' A symmetric matrix (only square matrix
may be symmetric - For complex matrices, it produces complex
conjugate transpose.
18Array 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(25) represents the second through fifth
elements - that is v(2), v(3), v(4), v(5).
- A(,3) denotes all the elements in the third
column of matrix A. - A(,25) denotes all the elements in the second
through fifth columns of A. - A(23,13) denotes all the elements in the second
and third rows that are also in the first through
third columns.Â
192-17
You can use array indices to extract a smaller
array from another array. For example, if you
first create the array B
2 4 10 13 16 3 7 18 8
4 9 25 3 12 15 17
B
then type C B(23,13), you can produce the
following array
16 3 7 8 4 9
B(2 , )16 3 7 18 B( , 3) 10
7 9
15
C
More? See pages 75-76.
20- M creates empty (null) matrix
- Rows and columns can be deleted by assigning
- For example
- A(,4) delete entire 4th column
- A(35,) delete 3rd , 4th , and 5th rows
of A - A(3 5,) delete 3rd and 5th rows of A
21- gtgt A 1 2
- 3 4
- A
- 1 2
- 3 4
- gtgt A(1,4) 5 expands matrix
automatically - A
- 1 2 0 5
- 3 4 0 0
- Matrix does not accept negative or zero indices,
but can use negative increments in colon
operator. - A(, 4-11) reverse the columns
- 5 0 2 1
- 0 0 4 3
- Always use clear all in the beginning of a script
to avoid reusing array with wrong dimention or
some other previous information
22Additional Array Functions (Table 2.11)
- 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.
A 2 0 3 0 0 0 8 0 3 0 u
1 2 1 2 v 1 2 3 4 w 2 8 3 3
2-18
23Additional Array Functions (Table 2.11)
- 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.
If A 7 3 6 0 - vector max(A) 7 If A 2
0 3 0 0 0 8 0 3 0
matrix max(A) 2 8 3 3 0
2-19
24Additional Array Functions (Table 2.11)
- 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
252-22
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
6 2 10 5 3 0
A
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(13,24), A(,34)
More? See pages 78-79.
26- sum sums elements in an array and column by
column in a matrix. - sort sorts elements in ascending order and
column by column in a matrix - A
- 1 7 3 2
- 4 5 4 9
- 7 2 1 3
- sumA
- 12 14 8 14
- sortA
- 1 2 1 2
- 4 5 3 3
- 7 7 4 9
27The Workspace Browser. Figure 2.12
More? See pages 79-80.
2-23
28The Array Editor. Figure 2.13double-click on
the array variable to get to Array Editor
More? See pages 79-81.
2-24
29Multidimensional ArraysConsist of
two-dimensional matrices layered to produce a
third dimension. Each layer is called a
page.Example of use say temperature in a room
with indices giving x, y, and z coordinates.
gtgt A 1 2 3 4 5 6 A 1
2 3 4 5 6 gtgt A(,,2) 4
5 6 7 8 9 A(,,1)
1 2 3 4 5 6 A(,,2)
4 5 6 7 8 9
- cat(n,A,B,C, ...) - creates a new array by
concatenating the arrays A,B,C, and so on along
the dimension n.
gtgt cat(3,A,B) ans(,,1) 1 2 3
4 5 6 ans(,,2) 4 5 6
7 8 9 gtgt cat(1,A,B) ans 1 2
3 4 5 6 4 5 6 7
8 9 gtgt cat(2,A,B) ans 1 2
3 4 5 6 4 5 6 7
8 9
gtgt A 1 2 3 4 5 6 A
1 2 3 4 5 6 gtgt B 4 5 6
7 8 9 B 4 5 6
7 8 9
2-25
More? See pages 81-83.
30- Vector addition by geometry.
- The parallelogram law.
- Addition of vectors in three dimensions.
2-26
312-27
Array Addition and Subtraction
Arrays are added and subtracted element by
element, for example
6 2 10 3
9 8 12 14
15 6 2 17
(2.3-1)
Array subtraction is performed in a similar
way. The addition shown in equation 2.31 is
performed in MATLAB as follows gtgtA
6,-210,3 gtgtB 9,8-12,14 gtgtAB ans
15 6 -2 17
More? See page 85.
32Geometric interpretation of scalar multiplication
of a vector. Figure 2.31
If r x, y, z, then v 2r 2x, y, z
2x, 2y, 2z. element by element scalar
multiplication
2-28
332-29
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
2 9 5 7
6 27 15 21
3
This multiplication is performed in MATLAB as
follows gtgtA 2, 9 5,-7 gtgt3A ans 6
27 15 -21
342-30
- 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 - array multiplication (element-by-element
multiplication) - matrix multiplication.
35Division 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
362-32
Element-by-element operations Table 2.31
Symbol - - . ./ .\ .
Examples 6,328,5 8,3-53,-2 6,5
4,810,13 6,5-4,82,-3 3,5.4,812
,40 2,5./4,82/4,5/8 2,5.\4,82\4,5\
8 3,5.232,52 2.3,523,25 3,5.
2,432,54
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
372-33
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.34) then z x.y gives
z 2( 7), 4 (3), 5(8) 14, 12, 40
382-34
If x and y are column vectors, the result of x.y
is a column vector. For example z (x).(y)
gives
2(7) 4(3) 5(8)
14 12 40
z
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.
392-35
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
11 5 9 4
7 8 6 2
A
B
then C A.B gives this result
11(7) 5(8) 9(6) 4(2)
77 40 54 8
C
NOT Matrix Multiplication
More? See pages 87-88.
402-36
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. gtgtx 4, 16, 25 gtgty
sqrt(x) element by element y 2 4 5
41However, 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.
More? See pages 89-90.
2-37
422-38
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
43Also, if
24 20 9 4
4 5 3 2
A
B
then C A./B gives
24/(4) 20/5 9/3 4/2
6 4 3 2
C
More? See pages 91-92.
2-39
442-40
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.
452-41
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.p 3.0.p 3..p correct, but
confusing (3).p 3.2,4,5 In class Ch2 T2.3-1
p93
More? See pages 92-95.
46Matrix Operations
- - see notes on dot product and matrix vector
multiplication
472-42
Matrix-Matrix Multiplication In the product of
two matrices AB, 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
(6)(9) ( 2)( 5) (6)(8) ( 2)(12)
(10)(9) (3)( 5) (10)(8) (3)(12)
(4)(9) (7)( 5) (4)(8) (7)(12)
9 8 5 12
64 24 75 116 1 116
(2.44)
Product of 3 by 2 matrix and 2 by 2 matrix gt get
3 by 2 matrix
482-43
Use the operator to perform matrix
multiplication in MATLAB. The following MATLAB
session shows how to perform the matrix
multiplication shown in (2.44). gtgtA
6,-210,34,7 gtgtB 9,8-5,12 gtgtAB ans
64 24 75 116 1 116
492-44
Matrix multiplication does not have the
commutative property that is, in general, AB ¹
BA. A simple example will demonstrate this fact
6 2 10 3
9 8 12 14
78 20 54 122
AB
(2.46)
whereas
9 8 12 14
6 2 10 3
134 6 68 65
BA
(2.47)
Reversing the order of matrix multiplication is a
common and easily made mistake.
More? See pages 97-104.
50More multipications
- gtgt x 1
- 2
- 3 column vector
- x
- 1
- 2
- 3
- gtgt y 4 5 6 row vector
- y
- 4 5 6
- gtgt xy 3 by 1 times 1 by 3 get 3 by 3
- ans
- 4 5 6 outer product
- 8 10 12
- 12 15 18
- gtgt yx 1 by 3 times 3 by 1 get 1 by 1
- ans
- 32 inner product
See Manufacturing Cost Example in the notes
512-45
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
52The 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
1 0 0 1
I
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.
More? See page 105.
2-46
532-47
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. The
syntax of the ones command is the same, except
that it creates arrays filled with ones. In
class T2.4-12, p100
More? See pages 105-106.
54Matrix Exponentiation
- An AAA A - n times (not .)
- Matrix A has to be square.
- gtgt A 1 2
- 3 4
- A
- 1 2
- 3 4
- gtgt A7
- ans
- 30853 44966
- 67449 98302
55Dot and Cross Products
- gtgt x 1 2 3
- x
- 1 2 3
- gtgt y 8 -2 4
- y
- 8 -2 4
- gtgt cross(x,y) cross product vector orthogonal
to x and y - ans
- 14 20 -18
- gtgt dot(x,y) dot product scalar
- ans
- 16
- gtgt
56Polynomial Multiplication and Division
- The polynomial above is entered into Matlab as
- gta a1 a2 a(n1), 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
0s
2-48
57Multiplying and Dividing Polynomials
- 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
582-49
Polynomial Multiplication and Division
Examples gtgta 9,-5,3,7 corresponds to
9x3 - 5x2 3x 7 gtgtb 6,-1,2
corresponds to 6x2 x 2 gtgtproduct
conv(a,b) product 54 -39 41 29 -1
14 54x5 39x4 41x3 29x2 x
14 gtgtquotient, 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
More? See pages 107-109.
59Polynomial Roots
- The function roots(a)computes the roots of a
polynomial specified by the coefficient array a. - The result is a column vector that contains the
polynomials roots. - For example,
- gtgtr roots(2, 14, 20) 2x214x200
- r
- -2
- -5
More? See page 107.
2-50
60Polynomial Coefficients
- The 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 polynomials coefficients arranged
in descending order of power. - For example,
- gtgtc poly(-2, -5)
- c
- 1 7 10 corresponds to x2 7x 10
More? See page 107.
2-51
61Plotting 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 polynomials coefficients of descending
powers are stored in the array a. - The result is the same size as x.
2-52
622-53
Example of Plotting a Polynomial To plot the
polynomial f (x) 9x3 5x2 3x 7 for 2
x 5, you type gtgta 9,-5,3,7 -
polynomial coefficients gtgtx -20.015 -
densely spaced x values gtgtf polyval(a,x) gtgtplot
(x,f),xlabel(x),ylabel(f(x)) In class
T2.5-1,2,3, 5. p111
More? See pages 109-110.
63Simple vibration model of a building subjected to
ground motion. Figure 2.51
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. Buildings
natural frequencies are determined by masses of
floors and by lateral stiffness of the
supporting columns. They are roots of the
characteristic polynomial.
gtgt k 7e6 m 1000 gtgt alpha
k/(4pi2m) gtgt p1 -1 0 alpha gtgt p2 -1
0 2alpha gtgt p3 alpha2 0 -2alpha3 gtgt
p4 conv(p2,p2)- 0 0 0 0 alpha2 gtgt p5
conv(p1,p4) gtgt p6 p5 0 0 0 0 p3 gtgt p6
p6 Columns 1 through 6 -1
0 886.56 0 -1.8864e005
0 Column 7 5.5746e006 gtgt r roots(p6) r
23.994 -23.994 16.605
-16.605 5.9261 -5.9261 gtgt pos r
(rgt0) pos 23.994 16.605
5.9261
642-54
Cell array functions. Table 2.61 - Skip!
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 to X A, Y B, . . .
. Matches up the input and output lists.
Equivalent to X A, Y A, . . . . Returns a 1
if C is a cell array otherwise, returns a 0.
More? See pages 112-117.
652-55
Structures Structures 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
Figure 2.71
662-56
Structure functions Table 2.71
Function names fieldnames(S) F
getfield(S,field) isfield(S,field)
Description Returns 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.
67Structure functions Table 2.71 (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, . . . .
In class T2.7-1,2,3, p123
More? See pages 117-123.
2-57
68The remaining slides are figures from the chapter
and its homework problems.
2-58
692-59
Plot for Example 2.36. Figure 2.35
70Figure 2.33
2-60
712-61
Aortic pressure response for Example
2.33. Figure 2.34
722-63
Figure P20
732-64
Figure P24
742-65
Figure P26
752-66
Figure P35
762-67
Figure 36
772-68
Figure P44