Engr/Math/Physics 25 Chp4 MATLAB Programming-4 Bruce Mayer, PE Licensed Electrical & Mechanical Engineer BMayer@ChabotCollege.edu Engineering/Math/Physics 25: Computational Methods 1 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 2 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 3 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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. Engineering/Math/Physics 25: Computational Methods 4 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 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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) • Determined Dynamically – No. of Loops Determined by a DECISION statement The Loop consists of • A Condition Test • A Repeated Statement-Block – No. of Loops Determined by simple COUNTING Engineering/Math/Physics 25: Computational Methods 5 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 6 a.k.a. “While DO” Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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” Engineering/Math/Physics 25: Computational Methods 7 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 8 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt for Loop Statement A PreTested, COUNTED Loop • Start Set k = m No. Repetitions Known MATLAB Syntax True Statements-1 statements end end Statements Engineering/Math/Physics 25: Computational Methods 9 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt False for Counter = Start : Increment: End Increment k by s k ≤ n? 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 Engineering/Math/Physics 25: Computational Methods 10 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 11 The MATLAB Code % Bruce Mayer, PE % ENGR25 * 27Feb12 % Build_Random_Array_by_FOR_120228.m % % Build 7x11 Array filled with Random Integers between -99 to +99 % Keep Track of Each Construction Step Step = 0 for k = 1:23 % ROW Count for m = 1:11 % COL Count Step = Step + 1 % counts how many times in Calc-§ % A(k,m) = (Random-SIGN)*(Randon-VALUE; 0-99) A(k,m)= (-1)^(round(rand(1)))*(fix(99.9*rand(1))) end end % % check No. of Positives & Negatives q = A>0; r = sum(q); NoPOS = sum(r) u = A<0; v = sum(u); NoNEG = sum(v) Steps = Step Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 12 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 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Remove continue Statement Let’s Fine Tune the No-Neg-Log Code by COMMENTING OUT the ifcontinue Commands y = 1.0000 The Result: 3.0000 Engineering/Math/Physics 25: Computational Methods 13 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 1.0000 + 1.3644i 2.0000 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 14 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Mask Array → -34 49 64 a Logical that “masks out” >> D = (B >= 0) Negative numbers D = 1 0 1 1 0 1 0 1 1 Engineering/Math/Physics 25: Computational Methods 15 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Logical MASK cont 4 25 64 Logical Mask Session cont >> B(D) = sqrt(B(D)) B = 0 -1 2 3 -14 5 -34 7 8 >> B(~D) = B(~D) B = 0 49 3 36 16 7 + 50 2 5 8 Engineering/Math/Physics 25: Computational Methods 16 Original B = 0 -1 9 -14 -34 49 Negative Values Unchanged → Masked OUT by D(m,n) = 0 Positive Values Unchanged → Masked OUT by D(m,n) = 1 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 ONLY the Three Sq-Roots 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 Engineering/Math/Physics 25: Computational Methods 17 2.2361 the Three Sq-Roots AND the two NONRoots -2.0000 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 18 Results from the disp statement are 5, 9, and 17. Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt while Loop Statement A PreTested DYNAMIC Loop • No. Repetitions UNknown MATLAB Syntax while Logical Expression end Set Loop Var Initial value Logical Decision True Statements (MUST Increment Loop Variable) end Statements Engineering/Math/Physics 25: Computational Methods 19 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt False statements Start while Loop Statement For the while loop to function properly two conditions must occur Set Loop Var Initial value Logical Decision True Statements (MUST Increment Loop Variable) end Statements Engineering/Math/Physics 25: Computational Methods 20 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt False 1. The loop variable must have a value BEFORE the while statement is executed (initialize) 2. The loop variable must be changed somehow by the statements INSIDE the Loop Start while Loop Build Vector • A simple while loop 1 x = k x = 5;k = 0; >> y while x < 25 x k = k + 1 y = y(k) = 3*x; k x = 2*x-1 15 27 51 end x 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 Engineering/Math/Physics 25: Computational Methods 21 The Results k = Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 9 = 2 = 17 = 3 = 33 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 Engineering/Math/Physics 25: Computational Methods 22 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 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Demos: for & while Prob 4-22 → Evaluate with for sum k 10 5k • Also list the value of the individual Terms 3 k 1 Use while to find the number of terms, qmax, such that Total k qmax 1.73 k 9999 k 1 Engineering/Math/Physics 25: Computational Methods 23 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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. Engineering/Math/Physics 25: Computational Methods 24 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 25 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt switch Example This switch Block displays the High School Class-Name that Corresponds to a Given Grade Level Engineering/Math/Physics 25: Computational Methods 26 grade_level = input('HiSchool 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 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 Engineering/Math/Physics 25: Computational Methods 27 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Example: Prob 4.27 Consider an Electrical Diode → We can MODEL the V-I Behavior of this Device in Several ways REAL Behavior IDEAL Model Engineering/Math/Physics 25: Computational Methods 28 OFFSET Model I V LINEAR Model Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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” Engineering/Math/Physics 25: Computational Methods 29 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Problem-27 cont Now Let’s Connect the Diode to • A Power Source, Vs • A Useful Load, RL Vs 3V e Engineering/Math/Physics 25: Computational Methods 30 - Next Assume that Vs is a Decaying Sinusoidal, Alternating Current (AC) Voltage-Source modeled mathematically as t / 3 s + VL sin t s Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Problem-27 → Plot Vs + % Bruce Mayer, PE * 08Sep11 % ENGR25 * Problem 4-27 VL % 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') Engineering/Math/Physics 25: Computational Methods 31 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Problem-27 → Plot Vs Diode ON + VL - Engineering/Math/Physics 25: Computational Methods 32 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Prob 27 cont Recall the Ideal-Diode Model → With This Diode Behavior we Expect Load a Voltage in this form IDEAL Model Vs if Vs 0 VL 0 if Vs 0 Write a MATLAB Program to Plot VL vs t for: 0 t 10s Engineering/Math/Physics 25: Computational Methods 33 + VL - Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 = '); VL % 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)); VS % chk Fwd 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 Engineering/Math/Physics 25: Computational Methods 34 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Problem-27 → Plot VL Ideal IDEAL Model Engineering/Math/Physics 25: Computational Methods 35 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Prob 27 cont Recall the OffSet-Diode Model → With This Diode Behavior we Expect Load Voltage in this form OFFSET Model Vs 0.6V if Vs 0.6V VL if Vs 0.6V 0 Write a MATLAB Program to Plot VL vs t for: 0 t 10s Engineering/Math/Physics 25: Computational Methods 36 + VL - Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt 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 = '); VL 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)); VS % chk Fwd 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 Engineering/Math/Physics 25: Computational Methods 37 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Problem-27 → Plot VL Offset OFFSET Model Engineering/Math/Physics 25: Computational Methods 38 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt + VL - Prob 27 Analysis Compare Plots Side-by-Side 0.6V Offset has a large affect when the Vs amplitude is only 3V • OffSet is 20% of amplitude Engineering/Math/Physics 25: Computational Methods 39 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Prob 24 Analysis Plots for 24V amplitude Makes less difference • Note different vertical scales Engineering/Math/Physics 25: Computational Methods 40 + VL - Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt All Done for Today Sinusoidal HalfWave Rectifier Engineering/Math/Physics 25: Computational Methods 41 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt Engr/Math/Physics 25 Appendix f x 2 x 7 x 9 x 6 3 2 Bruce Mayer, PE Licensed Electrical & Mechanical Engineer BMayer@ChabotCollege.edu Engineering/Math/Physics 25: Computational Methods 42 Bruce Mayer, PE BMayer@ChabotCollege.edu • ENGR-25_Programming-4.ppt