Chp4 MATLAB Programming-4 Engr/Math/Physics 25 Bruce Mayer, PE

advertisement
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
Download