08_GENN004m_VectorizedCode
-
Upload
bishoy-emile -
Category
Documents
-
view
215 -
download
0
Transcript of 08_GENN004m_VectorizedCode
-
7/29/2019 08_GENN004m_VectorizedCode
1/6
GENN004: Introduction to Computers 09-Feb-
Vectorized Code
Vectorized Code
Outline
Operations on Vectors and Matrices
Vectors and Matrices as Function Arguments
Logical Vectors
-
7/29/2019 08_GENN004m_VectorizedCode
2/6
GENN004: Introduction to Computers 09-Feb-
Vectorized Code
Operations on Vectors and Matrices
v=[3 7 2 1]
for i = 1:length(v)
v(i) =v(i) * 3;
End
v= [3 7 2 1];
>> v=v*3
9 27 6 3
mat = [4:6; 3:1:1]
mat =
4 5 6
3 2 1
>> mat * 2
ans =
8 10 12
6 4 2
Scalar OperationsOperation Algebraic Form MATLAB Form
Addition a + b a + b
Subtraction a b a b
Multiplication a b a * b
Divisiona
ba / b or b \ a
Exponentiation ab a ^ b
Note that b \ a is called left divisionThis is equal to a / b
-
7/29/2019 08_GENN004m_VectorizedCode
3/6
GENN004: Introduction to Computers 09-Feb-
Vectorized Code
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 ofa 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 ofa 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 ofa and b:
a(i,j) ^ b(i,j) provided a, b have same shape
Either a or b can be a scalar
Array and Matrix Operations
Array Operations are performed element-by-element Both arrays must have the same number of rows and
columns
Matrix Operations follow rules of linear algebra These rules are specific to each operation
Useful after Linear Algebra Course
Be careful not to confuse these two operation sets Since a matrix is an array in MATLAB, many times picking
the wrong operation wont produce an error as it istechnically valid but logically incorrect
-
7/29/2019 08_GENN004m_VectorizedCode
4/6
GENN004: Introduction to Computers 09-Feb-
Vectorized Code
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;
v2 = [33 11 5 1];
>> v1 * v2 %Error why
>> v1*v2 % what is the output
>> v1 .* v2 % v1 and v2 must have same size
-
7/29/2019 08_GENN004m_VectorizedCode
5/6
GENN004: Introduction to Computers 09-Feb-
Vectorized Code
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
-
7/29/2019 08_GENN004m_VectorizedCode
6/6
GENN004: Introduction to Computers 09-Feb-
Vectorized Code
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=vec(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: Vertical Motion
% Vertical motion under gravity
g = 9.81; % acceleration due to gravity
u = 60; % initial velocity in metres/sec
t = 0 : 0.1 : 12.3; % time in seconds
s = u * t g / 2 * t . 2; % vertical displacementin metres
plot(t, s), title( Vertical motion under gravity )
xlabel( time ), ylabel( vertical displacement )
grid
disp( [t s] ) % display a table