Engr/Math/Physics 25
This presentation is the property of its rightful owner.
Sponsored Links
1 / 42

Bruce Mayer, PE Licensed Electrical & Mechanical Engineer [email protected] PowerPoint PPT Presentation


  • 82 Views
  • Uploaded on
  • Presentation posted in: General

Engr/Math/Physics 25. Chp4 MATLAB Programming-4. Bruce Mayer, PE Licensed Electrical & Mechanical Engineer [email protected] Please HELP Rm 3906A Lab. Please do NOT SAVE ANY Files to the DESKTOP on the computers in Rm3906A Lab

Download Presentation

Bruce Mayer, PE Licensed Electrical & Mechanical Engineer [email protected]

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Bruce mayer pe licensed electrical mechanical engineer bmayer chabotcollege

Engr/Math/Physics 25

Chp4 MATLABProgramming-4

Bruce Mayer, PE

Licensed Electrical & Mechanical [email protected]


Please help rm 3906a lab

Please HELP Rm 3906A Lab

  • Please do NOT SAVE ANY Files to the DESKTOP on the computers in Rm3906A Lab

  • Saving to the machine DeskTop Leads to Clutter and Glitchy Computers

  • Thank You


Learning goals

Learning Goals

  • Write MATLAB Programs That can MAKE “Logical” Decisions that Affect Program Output

  • Write Programs that Employ LOOPing Processes

    • For→ No. Loops know a priori

    • while → Loop Terminates based on Logic Criteria


Loop structures

The conditional statements (if, else, elseif) we learned last time allowed us to determine at run-time whether or not to execute a block of code.

What these Decision Statements Do NOT do is to allow us to execute a block more than once

The TWO Things that Computers Do Better than People

STORE Massive Amounts of Data

REPEAT operations

Loop Structures


Repetition loops

A “LOOP” is a Program Structure that REPEATS Until some CONDITION is MET

The NUMBER of Loops may Be

Known a priori (ahead of time)

No. of Loops Determined by simple COUNTING

Determined Dynamically

No. of Loops Determined by a DECISION statement

The Loop consists of

A Condition Test

A Repeated Statement-Block

Repetition → LOOPs


Test vs statement locations

PreTest Loop

Test vs Statement Locations

  • The key feature → we test to see whether or not to continue before executing the body of the loop.

    • i.e., The Loop May Not Execute at All

  • Good if Potential Zero Executions is Desired

  • a.k.a. “While DO”


Test vs statement locations1

PostTest Loop

Test vs Statement Locations

  • The Key feature → Do Not Test Until the Block Executes at Least Once

  • Use if Design Calls for at Least-One Repetition

  • a.k.a. “DO While”


Test vs statement locations2

MidTest Loop

Test vs Statement Locations

  • The generalization of both the pre-test and the post-test loops

    • Empty Block-1 → PreTest Loop

    • Empty Block-2 → PostTest Loop


For loop statement

A PreTested, COUNTED Loop

for Loop Statement

Start

Set k = m

  • No. Repetitions Known

  • MATLAB Syntax

    • forCounter = Start : Increment: Endstatements

    • end

  • k ≤ n?

    Increment kby s

    True

    Statements-1

    False

    end

    Statements


    For loop rules

    Given for Loop Counting Variable: k=m:s:n

    The step value s may be negative

    Example: k = 10:-2:4 produces k = 10, 8, 6, 4

    If s is omitted, the step value defaults to +1

    If s is positive, the loop will not be executed if m is greater than n

    If s is negative, the loop will not be executed if m is less than n

    If mequalsn, the loop will be executed only once

    If the step value s is not an integer, round-off errors can cause the loop to execute a different number of passes than intended

    for Loop Rules


    For loop example

    For Loop Example

    • Construct a 23x11 2D Array filled with RANDOM integer between −99 and +99

    • Game Plan:

      • Use Nested for Loops along with rand, round, &fix commands

      • Track the No. of Construction Steps

    • The MATLAB Code

    Time For

    Live Demo


    The continue statement

    The continue statement passes control to the next iteration of the loop in which it appears, skipping any remaining statements in the body of the loop.

    The Following Code Uses a continue

    The continue Statement

    statement to avoid taking the log of a negative number.

    x = [10,1000,-10,100];

    y = NaN*x;

    for k = 1:length(x)

    if x(k) < 0

    continue

    end

    y(k) = log10(x(k));

    end

    • The Result:

    y = 1, 3, NaN, 2


    Remove continue statement

    Let’s Fine Tune the No-Neg-Log Code by COMMENTING OUT the if-continue Commands

    Remove continue Statement

    x = [10,1000,-10,100];

    y = NaN*x;

    for k = 1:length(x)

    %if x(k) < 0

    %continue

    %end

    y(k) = log10(x(k));

    end

    • The Result:

    y =

    1.0000 3.0000 1.0000 + 1.3644i 2.0000


    Use of a logical mask

    The use of loops and branching can often be avoided, thus creating simpler and faster programs by using a logical array as a mask that selects elements of another array.

    Any elements not selected will remain unchanged.

    The following session creates the logical array D from the 3x3 numeric array B

    Use of a Logical MASK


    Use of a logical mask cont

    Logical Mask Session

    Use of a Logical MASK cont

    >> B = [0, -1, 4; 9, -14, 25; -34, 49, 64]

    B =

    0 -1 4

    9 -14 25

    -34 49 64

    >> D = (B >= 0)

    D =

    1 0 1

    1 0 1

    0 1 1

    Mask Array →a Logical that “masks out” Negative numbers


    Logical mask cont

    Original B =

    0 -1 4

    9 -14 25

    -34 49 64

    Logical MASK cont

    • Logical Mask Session cont

    >> B(D) = sqrt(B(D))

    B =

    0 -1 2

    3 -14 5

    -34 7 8

    >> B(~D) = B(~D) + 50

    B =

    0 49 2

    3 36 5

    16 7 8

    Negative Values Unchanged → Masked OUT by D(m,n) = 0

    Positive Values Unchanged → Masked OUT by D(m,n) = 1


    Logical masking subtlety

    Logical Masking Subtlety

    >> x = [-7 0 8 5 -2]

    x =

    -7 0 8 5 -2

    >> nn = x>=0 % the logical mask

    nn =

    0 1 1 1 0

    >> y = x(nn)

    y =

    0 8 5

    >> sqrt1 = sqrt(x(nn))

    sqrt1 =

    0 2.8284 2.2361

    >> sqrt2 = x % make starting copy of x

    sqrt2 =

    -7 0 8 5 -2

    >> sqrt2(nn) = sqrt(sqrt2(nn))

    sqrt2 =

    -7.0000 0 2.8284 2.2361 -2.0000

    ONLY the Three Sq-Roots

    the Three Sq-Roots AND the two NON-Roots


    While loops

    The while loop is used when the looping process terminates because a specified condition is satisfied, and thus the number of passes is not known in advance.

    A simple example of a while loop is

    while Loops

    x = 5;

    while x < 25

    disp(x)

    x = 2*x - 1;

    end

    • Results from the disp statement are 5, 9, and 17.


    While loop statement

    A PreTested DYNAMIC Loop

    Start

    while Loop Statement

    Set Loop VarInitial value

    LogicalDecision

    • No. Repetitions UNknown

  • MATLAB Syntax

    • whileLogical Expression

    • statements

    • end

  • True

    Statements(MUST IncrementLoop Variable)

    False

    end

    Statements


    While loop statement1

    For the while loop to function properly two conditions must occur

    Start

    while Loop Statement

    Set Loop VarInitial value

    LogicalDecision

    • The loop variable must have a value BEFORE the while statement is executed (initialize)

    • The loop variable must be changed somehow by the statements INSIDE the Loop

    True

    Statements(MUST IncrementLoop Variable)

    False

    end

    Statements


    While loop build vector

    A simple while loop

    k =

    1

    x =

    9

    k =

    2

    x =

    17

    k =

    3

    x =

    33

    while Loop Build Vector

    • The Results

    x = 5;k = 0;

    while x < 25

    k = k + 1

    y(k) = 3*x;

    x = 2*x-1

    end

    >> y

    y =

    15 27 51

    • The loop variable x is initially assigned the value 5, and it keeps this value until the statement x = 2*x - 1 is encountered the first time. Its value then changes to 9. Before each pass through the loop, x is checked to see if its value is less than 25. If so, the pass is made. If not, the loop terminates


    Another while loop example

    Write a .m- file to determine

    The min. number of terms required for the sum of the series 5k2 – 2k; k = 1, 2, 3, … to just exceed 10,000.

    the sum for this number of terms

    The .m-file and the Results

    Another while Loop Example

    tot = 0;k = 0;

    while tot < 10e3

    k = k + 1;

    tot = 5*k^2 - 2*k + tot;

    end

    disp('No. terms = ')

    disp(k)

    disp('The Sum = ')

    disp(tot)

    No. Terms =

    18

    Sum =

    10203


    Demos for while

    Demos: for & while

    • Prob 4-22 → Evaluate with for

    • Also list the value of the individual Terms

    • Use whileto find the number of terms, qmax, such that

    Time For

    Live Demo


    The switch structure

    The switch structure provides an alternative to using the if, elseif, and else commands. Anything programmed using switch can also be programmed using if structures.

    However, for some applications the switch structure producesmore readable code than when using the if structure.

    The switch Structure


    Matlab switch syntax

    switch input expression (which can be a scalar or string).

    case value1

    statement group 1

    case value2

    statement group 2

    .

    .

    .

    otherwise

    statement group n

    end

    MATLAB switch Syntax


    Switch example

    This switch Block displays the High School Class-Name that Corresponds to a Given Grade Level

    switch Example

    grade_level = input('Hi-School Grade Level.: ');

    switch grade_level

    case 9

    disp(' Freshman')

    case 10

    disp(' Sophomore')

    case 11

    disp(' Junior')

    case 12

    disp(' Senior')

    otherwise

    disp(' NOT a Hi-Schl Grade Lvl')

    end


    Switch example results

    switch Example Results

    Hi-School Grade Level.: 9

    Freshman

    Hi-School Grade Level.: 11

    Junior

    Hi-School Grade Level.: 13

    NOT a Hi-Schl Grade Lvl

    Hi-School Grade Level.: 10

    Sophomore


    Example prob 4 27

    Consider an Electrical Diode →

    I

    V

    REALBehavior

    IDEALModel

    OFFSETModel

    LINEARModel

    Example: Prob 4.27

    • We can MODEL the V-I Behavior of this Device in Several ways


    Problem 27 cont

    Problem-27 cont

    • The Diode exhibits a form of RECTIFICATION

      • i.e., It allows current to Flow in the FORWARD direction, But NOT in the REVERSE direction

        • Think of a diode as a “Check-Valve” for Electrical Current”


    Problem 27 cont1

    Problem-27 cont

    • Now Let’s Connect the Diode to

      • A Power Source, Vs

      • A Useful Load, RL

    +VL-

    • Next Assume that Vs is a Decaying Sinusoidal, Alternating Current (AC) Voltage-Source modeled mathematically as


    Problem 27 plot vs

    Problem-27 → Plot Vs

    +VL-

    % Bruce Mayer, PE * 08Sep11

    % ENGR25 * Problem 4-27

    % file = Prob4_27_Vs_plot.m

    % INPUT SECTION

    tmax = input('Max time in sec = ');

    Vmax = input('Max Supply Potential in V = ');

    %CALCULATION SECTION

    % use linspace command to generate 500 time pts

    t = linspace(0,tmax,500);

    % Use for-Loop to generate plotting vector, vs

    for k = 1:500

    % Calc SUPPLY V-Level

    vsup = Vmax*exp(-t(k)/3)*sin(pi*t(k));

    vs(k) = vsup;

    end

    % PLOT SECTION

    plot(t,vs),ylabel('Load Voltage (V)'),xlabel('Time (sec)'),...

    title('Ideal-Diode Rectifier'), grid

    disp('Plot Complete')


    Problem 27 plot vs1

    Problem-27 → Plot Vs

    +VL-

    Diode ON


    Prob 27 cont

    Recall the Ideal-Diode Model →

    IDEALModel

    Prob 27 cont

    • With This Diode Behavior weExpect Load a Voltage in this form

    +VL-

    • Write a MATLAB Program to Plot VL vs t for: 0 t  10s


    Problem 27 plot v l ideal

    Problem-27 → Plot VL Ideal

    % Bruce Mayer, PE * 08Sep11

    % ENGR25 * Problem 4-27a

    % file = Prob4_27a_ideal_diode.m

    % INPUT SECTION

    tmax = input('Max time in sec = ');

    Vmax = input('Max Supply Potential in V = ');

    % CALCULATION SECTION

    % use linspace command to generate 500 time pts

    t = linspace(0,tmax,500);

    % Use for-Loop to generate plotting vector, vL

    for k = 1:500

    % Calc SUPPLY V-Level at the current t(k)

    vs = Vmax*exp(-t(k)/3)*sin(pi*t(k));

    % chkFwd or Rev condition by if-else

    if vs > 0

    vL(k) = vs; % diode absorbs NO voltage

    else

    vL(k) = 0; % diode BLOCKS ALL Current

    end

    end

    plot(t,vL),ylabel('Load Voltage (V)'),xlabel('Time (sec)'),...

    title('Ideal-Diode Rectifier'), grid

    +VL-

    VS


    Problem 27 plot v l ideal1

    IDEALModel

    Problem-27 → Plot VL Ideal


    Prob 27 cont1

    Recall the OffSet-Diode Model →

    OFFSETModel

    Prob 27 cont

    • With This Diode Behavior weExpect Load Voltage in this form

    +VL-

    • Write a MATLAB Program to Plot VL vs t for: 0 t  10s


    Problem 27 plot v l offset

    Problem-27 → Plot VL Offset

    % Bruce Mayer, PE * 08Sep11

    % ENGR25 * Problem 4-27b

    % file = Prob4_27b_offset_diode.m

    % INPUT SECTION

    tmax = input('Max time in sec = ');

    Vmax = input('Max Supply Potential in V = ');

    % CALCULATION SECTION

    % use linspace command to generate 500 time pts

    t = linspace(0,tmax,500);

    % Use for-Loop to generate plotting vector, vL

    for k = 1:500

    % Calc SUPPLY V-Level at current t(k)

    vs = Vmax*exp(-t(k)/3)*sin(pi*t(k));

    % chkFwd or Rev condition by if-else

    if vs > 0.6

    vL(k) = vs-0.6; % diode absorbs 0.6V

    else

    vL(k) = 0; % diode BLOCKS All current

    end

    end

    plot(t,vL),ylabel('Load Voltage (V)'),xlabel('Time (sec)'),...

    title('Offset-Diode Rectifier'), grid

    +VL-

    VS


    Problem 27 plot v l offset1

    OFFSETModel

    Problem-27 → Plot VL Offset


    Prob 27 analysis

    Compare Plots Side-by-Side

    +VL-

    Prob 27 Analysis

    • 0.6V Offset has a large affect when the Vs amplitude is only 3V

      • OffSet is 20% of amplitude


    Prob 24 analysis

    Plots for 24V amplitude

    Prob 24 Analysis

    +VL-

    • Makes less difference

      • Note different vertical scales


    All done for today

    All Done for Today

    SinusoidalHalfWaveRectifier


    Bruce mayer pe licensed electrical mechanical engineer bmayer chabotcollege

    Engr/Math/Physics 25

    Appendix

    Time For

    Live Demo

    Bruce Mayer, PE

    Licensed Electrical & Mechanical [email protected]


  • Login