08_GENN004m_VectorizedCode

Embed Size (px)

Citation preview

  • 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