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