Presentation is loading. Please wait.

Presentation is loading. Please wait.

ENGR-25_Programming-4.ppt 1 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 1 Bruce Mayer, PE Licensed Electrical.

Similar presentations


Presentation on theme: "ENGR-25_Programming-4.ppt 1 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 1 Bruce Mayer, PE Licensed Electrical."— Presentation transcript:

1 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 1 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 1 Bruce Mayer, PE Licensed Electrical & Mechanical Engineer BMayer@ChabotCollege.edu Engr/Math/Physics 25 Chp4 MATLAB Programming-4

2 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 2 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 2 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

3 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 3 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 3 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

4 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 4 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 4 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

5 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 5 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 5 Test vs Statement Locations  PreTest Loop  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”

6 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 6 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 6 Test vs Statement Locations  PostTest Loop  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”

7 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 7 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 7 Test vs Statement Locations  MidTest Loop  The generalization of both the pre-test and the post-test loops Empty Block-1 → PreTest Loop Empty Block-2 → PostTest Loop

8 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 8 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 8 for Loop Statement  A PreTested, COUNTED Loop Start k ≤ n? Statements-1 end Statements True False Set k = m Increment k by s No. Repetitions Known  MATLAB Syntax for Counter = Start : Increment: End statements end

9 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 9 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 9 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 m equals n, 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

10 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 10 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 10 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 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 statement to avoid taking the log of a negative number.  The Result: y = 1, 3, NaN, 2

11 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 11 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 11 Remove continue Statement  Let’s Fine Tune the No-Neg-Log Code by COMMENTING OUT the if- continue Commands 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

12 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 12 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 12 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

13 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 13 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 13 Use of a Logical MASK cont  Logical Mask Session >> 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

14 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 14 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 14 Logical MASK 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 Original B = 0 -1 4 9 -14 25 -34 49 64 Positive Values Unchanged → Masked OUT by D(m,n) = 1  Logical Mask Session cont

15 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 15 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 15 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 x = 5; while x < 25 disp(x) x = 2*x - 1; end  Results from the disp statement are 5, 9, and 17.

16 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 16 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 16 while Loop Statement  A PreTested DYNAMIC Loop Start Logical Decision Statements (MUST Increment Loop Variable) end Statements True False No. Repetitions UNknown  MATLAB Syntax while Logical Expression statements end Set Loop Var Initial value

17 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 17 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 17 while Loop Statement  For the while loop to function properly two conditions must occur Start Logical Decision Statements (MUST Increment Loop Variable) end Statements True False 1.The loop variable must have a value before the while statement is executed 2.The loop variable must be changed somehow by the statements Inside the Loop Set Loop Var Initial value

18 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 18 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 18 while Loop Example  A simple while loop x = 5;k = 0; while x < 25 k = k + 1 y(k) = 3*x; x = 2*x-1 end  The Results k = 1 x = 9 k = 2 x = 17 k = 3 x = 33 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 >> y y = 15 27 51

19 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 19 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 19 Another while Loop Example  Write a.m- file to determine The min. number of terms required for the sum of the series 5k 2 – 2k; k = 1, 2, 3, … to exceed 10,000. the sum for this number of terms  The.m-file and the Results 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

20 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 20 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 20 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 produces more readable code than when using the if structure.

21 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 21 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 21 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

22 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 22 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 22 switch Example  This switch Block displays the High School Class-Name that Corresponds to a Given Grade Level 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

23 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 23 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 23 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

24 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 24 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 24 Example: Prob 4.24  Consider an Electrical Diode →  We can MODEL the V-I Behavior of this Device in Several ways V I REAL Behavior IDEAL Model OFFSET Model LINEAR Model

25 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 25 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 25 Problem-24 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”

26 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 26 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 26 Problem-24 cont  Now Let’s Connect the Diode to A Power Source, V s A Useful Load, R L  Next Assume that V s is a Decaying Sinusoidal, Alternating Current (AC) Voltage-Source modeled mathematically as +VL +VL 

27 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 27 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 27 Problem-24 → Plot Vs +VL +VL  % Bruce Mayer, PE * 08Jul05 % ENGR25 * Problem 4-24 % file = Prob4_24_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')

28 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 28 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 28 Problem-24 → Plot Vs +VL +VL 

29 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 29 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 29 Prob 24 cont  Recall the Ideal-Diode Model →  With This Diode Behavior we Expect Load a Voltage in this form IDEAL Model +VL +VL   Write a MATLAB Program to Plot V L vs t for: 0  t  10s

30 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 30 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 30 Problem-24 → Plot V L Ideal +VL +VL  % Bruce Mayer, PE * 08Jul05 % ENGR25 * Problem 4-24a % file = Prob4_24a_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)); % chk Fwd or Rev condition by if-else if vs > 0 vL(k) = vs; else vL(k) = 0; end end plot(t,vL),ylabel('Load Voltage (V)'),xlabel('Time (sec)'),... title('Ideal-Diode Rectifier'), grid VSVS

31 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 31 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 31 Problem-24 → Plot V L Ideal IDEAL Model

32 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 32 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 32 Prob 24 cont  Recall the OffSet-Diode Model →  With This Diode Behavior we Expect Load Voltage in this form +VL +VL   Write a MATLAB Program to Plot V L vs t for: 0  t  10s OFFSET Model

33 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 33 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 33 Problem-24 → Plot V L Offset +VL +VL  % Bruce Mayer, PE * 08Jul05 % ENGR25 * Problem 4-24b % file = Prob4_24b_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)); % chk Fwd or Rev condition by if-else if vs > 0.6 vL(k) = vs-0.6; else vL(k) = 0; end end plot(t,vL),ylabel('Load Voltage (V)'),xlabel('Time (sec)'),... title('Offset-Diode Rectifier'), grid VSVS

34 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 34 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 34 Problem-24 → Plot V L Offset OFFSET Model

35 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 35 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 35 Prob 24 Analysis  Compare Plots Side-by-Side  0.6V Offset has a large affect when the V s amplitude is only 3V OffSet is 20% of amplitude +VL +VL 

36 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 36 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 36 Prob 24 Analysis  Plots for 24V amplitude  Makes less difference Note different vertical scales +VL +VL 

37 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 37 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 37 All Done for Today Sinusoidal HalfWave Rectifier

38 BMayer@ChabotCollege.edu ENGR-25_Programming-4.ppt 38 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 38 Bruce Mayer, PE Licensed Electrical & Mechanical Engineer BMayer@ChabotCollege.edu Engr/Math/Physics 25 Appendix


Download ppt "ENGR-25_Programming-4.ppt 1 Bruce Mayer, PE Engineering/Math/Physics 25: Computational Methods 1 Bruce Mayer, PE Licensed Electrical."

Similar presentations


Ads by Google