Transcript Lecture-4

Manipulating MATLAB
Vector, Matrices
1
Variables and Arrays
 What are variables?
 You name the variables (as the programmer) and assign them
numerical values.
 You execute the assignment command to place the variable in the
workspace memory (memory is part of hardware used for storing
information).
 You are allowed to use the variable in algebraic expressions, etc.
once it is assigned.
2
(Arrays)
An array is MATLAB's basic data structure.
 Can have any number of dimensions. Most common are:
 vector - one dimension (a single row or column)
 matrix - two or more dimensions
 Arrays can have numbers or letters.
3
Variables as Arrays
In MATLAB, a variable is stored as an array of
numbers. When appropriate, it is interpreted as a
scalar, vector or matrix.
scalar
vector
matrix
1×1
n × 1 or 1 × n
n×m
The size of an array is specified by the number of
rows and the number of columns in the array, with
the number of rows indicated first.
4
Scalars
• Scalars are 1×1 arrays.
• They contain a single value, for example:
• X=3
• Height=5.34
• Width=10.09
5
Vectors
 A vector is a list of numbers expressed as a 1
dimensional array.
 A vector can be n×1 or 1×n.
 Columns are separated by commas (or spaces):
 x = [1, 2, 3] or x = [1 2 3]
 Rows are separated by semicolons:
 y= [1; 2; 3]
6
(Creating a row vector)
To create a row vector from known numbers, type variable
name, then equal sign, then inside square brackets, numbers
separated by spaces.
variable_name = [ n1, n2, n3 ]
Commas optional
>> yr = [1984 1986 1988 1990 1992 1994 1996]
yr =
Note MATLAB displays row vector
horizontally
1984 1986 1988 1990 1992 1994 1996
7
(Creating a Column Vector)
To create a column vector from known numbers
 Method 1 - same as row vector but put semicolon after all
but last number
variable_name = [ n1; n2; n3 ]
>> yr = [1984; 1986; 1988 ]
yr =
1984
1986
1988
8
Note: MATLAB
displays column
vector vertically
(Creating a column vector)
 Method 2 - same as row vector but put apostrophe (') after
closing bracket.
 Apostrophe interchanges rows and columns. Will come back
on this later.
variable_name = [ n1 n2 n3 ]'
>> yr = [1984 1986 1988 ]'
yr =
1984
1986
9
1988
(Constant spacing vectors)
To create a vector with specified constant spacing between
elements
variable_name = m:q:n
 m is the first number
 n is the last number
 q is the difference between consecutive numbers
v = m:q:n
means
v = [ m m+q m+2q m+3q ... n ]
10
(Constant spacing vectors)
If q is omitted, the spacing is 1
v = m:n
means
v = [ m m+1 m+2 m+3 ... n ]
>> x = 1:2:13
Non-integer spacing
x = 1 3 5 7 9 11 13
>> y = 1.5:0.1:2.1
y = 1.5000 1.6000 1.7000 1.8000 1.9000
2.0000 2.1000
11
(Constant spacing vectors)
>> z = -3:7
z = -3 -2 -1 0 1 2 3 4 5 6 7
>> xa = 21:-3:6
Negative spacing
xa = 21 18 15 12 9 6
>> fred = 7:-2:15
fred =
12
Impossible spacing
Empty matrix: 1-by-0
(Quick linspace Exercises)
1. How would you use linspace to set up
spacings for planting seedlets in a garden row
(30 seedlets, each row 2 meters long).
2. How about planning a 4285km road trip on
21 days. How long each leg would be?
13
(Fixed length vectors)
To create a vector with specified number of terms between first
and last
v = linspace( xi, xf, n )
 xi is first number
 xf is last number
 n is the number of terms (obviously must be a
positivenumber) (= 100 if omitted)
14
>> va = linspace( 0, 8, 6 )
TIP
Six elements
va = 0 1.6000 3.2000 4.8000 6.4000
8.0000
>> va = linspace( 30, 10, 11 )
Decreasing
elements
va=30 28 26 24 22 20 18 16 14 12 10
m:q:n lets you directly specify
spacing. linspace() lets you
directly specify number of terms.
15
Indexing Into an Array allows you to
change a value
Adding Elements
If you add an element outside
the range of the original array,
intermediate elements are
added with a value of zero
2-D Matrices
2-D Matrices can also
be entered by listing
each row on a
separate line
C = [-12, 0, 0
12, 13, 40
1, -1, 90
0, 0, 2]
2-D Matrices
Use an ellipsis to continue a definition
onto a new line
M = [12, 152, 6, 197, 32, -32, …
55, 82, 22, 10];
2-D matrix
These
semicolons
are optional
Define a matrix using other matrices as
components
Or…
Matrices
Columns
 A matrix is a two
Rows
dimensional array of
numbers.
 For example, this is a 4×3
matrix:
mat1=[1.0,1.8,1.6; 3.0,2.0,25.1; 0.0,-5.1,12.7;
2.3,0.3,-3.1]
24
1
2
3
1
1.0
1.8
1.6
2
3.0
-2.0
25.1
3
0.0
-5.1
12.7
4
2.3
0.3
-3.1
Indexed-location of numbers in an array
1
located in the
(row, column).
 mat1(2,3)
 ans=

25.1000
25
Rows
 Each item in an array is
Columns
2
3
1
1.0
1.8
1.6
2
3.0
-2.0
25.1
3
0.0
-5.1
12.7
4
2.3
0.3
-3.1
Practice!
 Enter the following into MATLAB:
 Scalar:
x=90
 Vectors:
y=[1, 0, 55]
z=[1 0 55]
 Matrix:
m= [ 55, 44, 33; 0, 2, 88]
26
Manipulating MATLAB
Vector, Matrices
27
Defining (or assigning) arrays
 An array can be defined by typing in a list of numbers enclosed in
square brackets:
 Commas or spaces separate numbers.
 m=[12, 1, -33]
or m=[12 1 -33]
m=
12
18
-33
 Semicolons indicate a new row.
 n=[2, 50, 20;1,1,2;0,-2,66]
28
n =
2
1
0
50
1
-2
20
2
66
Defining arrays continued
 You can define an array in terms of another array:
 r=[m;n]
r =
12
2
1
0
18
50
1
-2
-33
20
2
66
 p=[r,r]
p =
29
12
2
1
0
18
50
1
-2
-33
20
2
66
12
2
1
0
18
50
1
-2
-33
20
2
66
(Verctor/Matrix Addressing)
We can access (read from or write to)
elements in an array (vector or matrix)
individually or in groups.
• Useful for changing a subset of elements.
• Useful for making a new variable from a
subset of elements.
30
(Accessing Vectors Elements 1)

You can access any element by indexing the vector name
with parentheses (indexing starts from 1, not from 0 as in C).
>> odd = [1:3:10]
odd = 1 4 7
>> odd(3)
ans = 7
31
10
Review…
 Index – a number used to identify elements in an array
 Retrieving a value from an array:
n =
2
1
0
n(2,1)
ans=1
50
1
-2
20
2
66
 You can change a value in an element in an array with indexing:
 n(3,2)=55
n =
2
1
0
50
1
55
20
2
66
You can extend an array by defining a new element:
m=[12 1 -33] m(6)=9
32
m=[12 1 -33 0 0 9]
Notice how undefined
values of the array are filled
with zeros
(Range of Elements / Vector Arithmetic)
We can also access a range of elements (a subset of the
original vector) by using the colon operator and giving
a starting and ending index.
>> odd(2:4)
ans = 4 7 10

Simple arithmetic between scalars and vectors is
possible.
>> 10 + [1 2 3]
ans = 11 12 13

33
(Matrices)
Create a two-dimensional matrix like this
m = [ row 1 numbers; row 2 numbers; ... ; last
row numbers ]
 Each row separated by semicolon. All rows have same number of
columns
>> a=[ 5 35 43; 4 76 81; 21 32 40]
a =
34
5
35
43
4
76
81
21
32
40
(Matrices)
>> cd=6; e=3; h=4;
Comma is optional
>> Mat=[e, cd*h, cos(pi/3);...
h^2 sqrt(h*h/cd) 14]
Mat =
3.0000
16.0000
35
24.0000
1.6330
0.5000
14.0000
(Matrices)
Can also use m:p:n or linspace() to make rows
 Make sure each row has same number of columns
>> A=[1:2:11; 0:5:25;...
linspace(10,60,6); 67 2 43 68 4 13]
A =
36
1
3
5
7
9
11
0
5
10
15
20
25
10
20
30
40
50
60
67
2
43
68
4
13
(Matrices)
What if the number of columns is different?
Four columns
Five columns
>> B= [ 1:4; linspace(1,4,5) ]
??? Error using ==> vertcat
CAT arguments dimensions are not
consistent.
All arrys in the argument list must have the same number of
columns.
37
(Special Matrix Commands)
zeros(m,n) - makes a matrix of m rows and n columns,
all with zeros.
ones(m,n) - makes a matrix of m rows and n columns, all
with ones.
eye(n) - makes a square matrix of n rows and columns.
Main diagonal (upper left to lower right) has ones, all other
elements are zero.
38
Examples!
 zeros(2,5)
 ans =

0 0 0

0 0 0
 ones(3,5)
 ans =

1 1 1

1 1 1

1 1 1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
0
0
0
0
0
1
 eye(5)
 ans =




39
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
Note: Placing a single number inside either
function will return an n × n array. e.g.
ones(5) will return a 5 × 5 array filled with
ones.
>> zr=zeros(3,4)
zr = 0
0
0
0
>>
0
0
0
0
idn = 1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
>> ne=ones(4,3)
40
ne = 1
1
1
1
1
1
1
1
1
1
1
1
idn=eye(5)
TIP
To make a matrix filled with a particular
number, multiply ones(m,n) by that
number
>> z=100*ones(3,4)
z =
41
100
100
100
100
100
100
100
100
100
100
100
100
(About variables in MATLAB)
 All variables are arrays
 Scalar - array with only one element
 Vector - array with only one row or column
 Matrix - array with multiple rows and columns
 Assigning to variable specifies its dimension
 Don't have to define variable size before assigning to it, as you do in
many programming languages
 Reassigning to variable changes its dimension to that of assignment.
42
(The Transpose Operator)
Transpose a variable by putting a single quote after it, e.g., x'
 In math, transpose usually denoted by superscript "T", e.g., xT
 Converts a row vector to a column vector and vice-versa.
 Switches rows and columns of a matrix, i.e., first row of
original becomes first column of transposed, second row of
original becomes second column of transposed, etc.
43
Continue…
 The transpose operator, an apostrophe, changes all of an
array’s rows to columns and columns to rows.
m = [12, 1, -33]
m=
12 1 -33
m’
ans=
12
1
-33
>> aa=[3 8 1]
aa =
3
>> bb=aa'
bb = 3
8
44
1
8
1