GENN004 Lect9 VectorizedCode
GENN004 Lect9 VectorizedCode
Vectorized Code
Outline
• Operations on Vectors and Matrices
• Vectors and Matrices as Function Arguments
• Logical Vectors
Operations on Vectors and Matrices
v=[3 7 2 1] mat = [4:6; 3:-1:1]
for i = 1:length(v) mat =
v(i) =v(i) * 3; 4 5 6
end 3 2 1
>> mat * 2
v= [3 7 2 1]; ans =
>> v=v*3 8 10 12
9 21 6 3 6 4 2
Scalar Operations
Operation Algebraic Form MATLAB Form
Addition a+b a + b
Subtraction a–b a – b
Multiplication a×b a * b
a
Division a / b
b
Exponentiation ab a ^ b
A + B = [1 2 3] + [3 4 5] = [4 6 8]
Element and Algebraic operations are the same
A .* B = [1 2 3] .* [3 4 5] = [3 8 15]
A .^ B = [4 9 6] .^ [2 2 2] = [16 81 36]
A ./ B =[4 9 6] ./ [2 3 2] = [2 3 3]
Array Operations
Operation MATLAB form Comments
Addition a + b Adds each element in a to the element with the same
index in b
Subtraction a – b Subtracts from each element in a the element with the
same index in b
Multiplication a .* b Multiplies each element in a with the element in b
having the same index
Either a or b can be a scalar
Right Division a ./ b Element by element division of a and b:
a(i,j) / b(i,j) provided a, b have same shape
Either a or b can be a scalar
Left Division a .\ b Element by element division of a and b:
b(i,j) / a(i,j) provided a, b have same shape
Either a or b can be a scalar
Exponentiation a .^ b Element by element exponentiation of a and b:
a(i,j) ^ b(i,j) provided a, b have same shape
Either a or b can be a scalar
Operations Rules Examples
v=[3 7 2 1];
>> v ^ 2
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^)
instead.
>> v .^ 2
ans =
9 49 4 1
Operations Rules Examples
v1 = 2:5;
v1 = [2 3 4 5]
v2 = [33 11 5 1];
>> v1 * v2 %Error why
>> v1*v2’ % what is the output
>> v1 .* v2 % v1 and v2 must have same size
Vectors and Matrices as Function
Arguments
• Many functions accept scalars as input
• Some functions work on arrays
• Most scalar functions accept arrays as well
– The function is performed on each element in the array
individually
• Try x = pi/2; y = sin(x) in MATLAB
• Now try
x = [0 pi/2 pi 3*pi/2 2*pi];
y = sin(x)
Functions Examples
v1=[1 3 2 7 4 -2]
v2=[5 3 4 1 2 -2]
[mx mxi]=max(v1) 7 4
v=v1-v2 -4 0 -2 6 2 0
v=sign(v1-v2) -1 0 -1 1 1 0
x=sum(v1) 15
v=find(v1>3) 4 5
Logical Vectors
v1=[1 3 2 7 4 -2]
v2=[5 3 -4 -1 2 -2]
v=v1>0 1 1 1 1 1 0
v=v2>0 1 1 0 0 1 0
a=v2(v) 5 3 2
x=sum(v2>0) 3
v=true(1,5) 1 1 1 1 1
v=false(1,5) 0 0 0 0 0
x=all(v) 1 (are all ones?)
y=any(v) 0 (any one?)
Example
1 1 3 0
2 4 1 3
Let a What is the value of B (a(1, :) 0) ?
2 1 4 2
0 1 3 5
B = [0 0 0 1]
Example
1 1 3 0
2 4 1 3
Let a What is the value of D a([4 3], 1 : 2) ?
2 1 4 2
0 1 3 5
0 1
D
2 1
Example
Write a program using Matlab loop(s) to calculate the following
while assuming that the variable x has been initialized:
10
𝑆= 𝑥𝑖2
𝑖=1
N=10;
x = 1:N;
S=0;
for i = 1:N
S=S+ x(i)*x(i);
end
S