Loading in 5 sec....

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

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

- By
**ulfah** - Follow User

- 99 Views
- Uploaded on

Download Presentation
## PowerPoint Slideshow about ' Bruce Mayer, PE Licensed Electrical & Mechanical Engineer [email protected]' - ulfah

**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

MATLAB Syntax

MATLAB Syntax

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

- 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

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 StructuresA “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 → LOOPsPreTest Loop CONDITION is MET

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”

PostTest Loop CONDITION is MET

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”

MidTest Loop CONDITION is MET

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

A PreTested, COUNTED Loop CONDITION is MET

for Loop StatementStart

Set k = m

- No. Repetitions Known

- forCounter = Start : Increment: Endstatements
- end

k ≤ n?

Increment kby s

True

Statements-1

False

end

Statements

Given for Loop Counting Variable: CONDITION is METk=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 RulesFor Loop Example CONDITION is MET

- 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 CONDITION is METcontinue 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 Statementstatement 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

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

Remove continue Statementx = [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

The use of loops and branching can often CONDITION is METbe 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 MASKLogical Mask Session CONDITION is MET

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

Original CONDITION is MET 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 CONDITION is MET

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

The CONDITION is METwhile 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 Loopsx = 5;

while x < 25

disp(x)

x = 2*x - 1;

end

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

A PreTested DYNAMIC Loop CONDITION is MET

Start

while Loop StatementSet Loop VarInitial value

LogicalDecision

- No. Repetitions UNknown

- whileLogical Expression
- statements
- end

True

Statements(MUST IncrementLoop Variable)

False

end

Statements

For the while loop to function properly CONDITION is METtwo conditions must occur

Start

while Loop StatementSet 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

A simple CONDITION is METwhile 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

Write a .m- file to determine CONDITION is MET

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 Exampletot = 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: CONDITION is METfor & 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 CONDITION is METswitch 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 Structureswitch input expression CONDITION is MET(which can be a scalar or string).

case value1

statement group 1

case value2

statement group 2

.

.

.

otherwise

statement group n

end

MATLAB switch SyntaxThis CONDITION is METswitch Block displays the High School Class-Name that Corresponds to a Given Grade Level

switch Examplegrade_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 CONDITION is MET 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

Consider an Electrical Diode → CONDITION is MET

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 CONDITION is METcont

- 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”

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

Problem-27 CONDITION is METcont

- 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 CONDITION is METVs

+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')

Recall the Ideal-Diode Model → CONDITION is MET

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 CONDITION is METL 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

IDEAL CONDITION is METModel

Problem-27 → Plot VL IdealRecall the OffSet-Diode Model → CONDITION is MET

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 CONDITION is METL 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

OFFSET CONDITION is METModel

Problem-27 → Plot VL OffsetCompare Plots Side-by-Side CONDITION is MET

+VL-

Prob 27 Analysis- 0.6V Offset has a large affect when the Vs amplitude is only 3V
- OffSet is 20% of amplitude

Plots for 24V amplitude CONDITION is MET

Prob 24 Analysis+VL-

- Makes less difference
- Note different vertical scales

All Done for Today CONDITION is MET

SinusoidalHalfWaveRectifier

Engr/Math/Physics 25 CONDITION is MET

Appendix

Time For

Live Demo

Bruce Mayer, PE

Licensed Electrical & Mechanical [email protected]

Download Presentation

Connecting to Server..