Chapter 8 and 9 Review

advertisement
Chapter 8 and 9 Review: Logical
Functions and Control Structures
Introduction to MATLAB 7
Engineering 161
Introduction to Chapter 8




Learn how to include logic in a program to allow
choices depending upon the input data or
intermediate calculations.
In the process we will add a number of new MATLAB
commands to our repertoire of commands.
We begin by exploring the concept of relational and
logical operators, we will look at flowcharting, the
find command and then various control structures.
Mastering these concepts will move you to a new
level as a MATLAB user.
Relational and Logical Operators

To get started incorporating statement control
structures in our programs, we need to understand
MATLAB’s relational and logical operations. Consider,
>> x = 5;
>> x < 3
% < is a relational operator
ans =
0
The statement x < 3 is asking the question, Is x < 3?; MATLAB returns
with ans = 0 which is read as false, i.e., x is not less than 3. If x was
less than 3, MATLAB would have returned with ans = 1, or true. The
result of a relational operation is always true (1) or false (0).
Relational and Logical Operators II

Relational operators applied to matrices yield comparisons term
by term, the matrices must be the same order, consider
>> x = 1 : 5;
>> y = [2, 2, 1, 6, 4];
>> y >= x
ans =
1 1 0 1 0
% read as great than or equal to
In this case, x and y are row vectors of 5 elements each.
MATLAB compares term by term and determines that y >= x
for the 1st, 2nd, and 4th terms only.
Relational and Logical Operators III

MATLAB’s Relational Operators






<
<=
>
>=
==
~=
read
read
read
read
read
read
as less than
as less than or equal to
as greater than
as greater than or equal to
as equal to
as not equal to
Now remember the result of a relational operation is always true
(1) or false (0); x is greater than y or it is not, x is equal to 3 or it
is not.
Relational and Logical Operators IV

MATLAB’s Logical Operators



&
~
|
read as the logical operation of and
read as the logical operation of not
read as the logical operation of or
Logical operators allow us to combine relational operators
to form more complex operations, for example, (x > y) &
( y <= 3 ) asks the question, is x greater than y and y
less or equal to 3. If so, MATLAB returns with true
(1) else false (0).
Flowcharting and Pseudocode





Flowcharting is a graphical technique for creating your coding
plan,
Pseudocode is a verbal description of your plan.
Both allow you to organize your thoughts and generate a
description of your program without worrying about the
formality of the MATLAB statements used to create your
program.
Both techniques let you focus on the logical flow of your
program first before translating into MATLAB.
These techniques minimize the chance for logical errors in your
program.
Flowcharting
Four symbols facilitate developing flowcharts,
Start/Stop
Input/Output
Decision
Calculations
Start Conversion
Enter Temp in
degrees C
Convert to
degrees F
Output
converted Temp
Stop
MATLAB’s find command

The find command searches a matrix, row or column vector
and identifies which elements in the matrix that meet a given
criterion.
height = [63, 67, 65, 72, 69, 78, 75]; % height in inches
x = find(height >= 66)
x=
2 4 5 6 7
x is a five element row matrix of the indices of height that
satisfy the criterion of being greater than or equal to 66
MATLAB’s find command II

If you want then to know the actual values (not the indices)
that satisfy the criterion, consider
accept = height(x)
which would return
accept =
67 72 69 78 75
MATLAB’s find command III

The find command can be used with mxn matrices,
either ask for the row and column or use the default
number scheme, by column left to right.
A = some mxn matrix of temperatures
[row, column] = find(A > 100) % row/column indices
or
temps = find(A>100)
% single index number
Statement Level Control Structures

MATLAB programs are generally organized as one of
or as a combination of three control structures



Sequences: Here MATLAB commands are executed one
after the other in a linear manner from beginning to end.
Selection: Here at some point in a program based upon
some logical condition, one branch of the program is
selected and followed as opposed to some other branch.
Repetition: Here a sequence of commands is executed
some number of times, from 0 to 1 to 2 to n times. The
repetition continues until some logical condition is met, then
the repetition ceases and the program continues.
if, else and elseif

if, else, and elseif statements help us use the selection type of control structure.
Here some condition is tested, if the condition is true one sequences of
commands is selected, if false another sequence of commands is selected. The
form of the if statement is
if comparison
statement 1
statement 2
etc.
end
% the comparison is a relational operation such as
% x < y or k >10 or x<y & y > z
Upon encountering the if statement, MATLAB determines if the comparison is
true or false, when it is true, then the statements between the if and the end
statements are executed, when false they are not executed.
Now let’s incorporate the else statement with the if statement.
if, else and elseif

Incorporating the else statement,
if comparison
statement 1
statement 2
etc.
else
statement a
statement b
etc.
end
% some relational operation
% first set of commands
% second set of commands
Here when the comparison is true, the first set of statements is executed, the second set
will not be. But when the comparison is false, the second set of commands is executed, the
first set is not. One of the sets will be executed but not both.
if, else and elseif

Incorporating the elseif statement,
if comparison #1
statements
elseif comparison #2
statements
elseif comparison #3
statements
else
statements
end
Here we allow for several comparisons, when #1 is true the statements following the if
statement are executed up to the first elseif statement, for #1 false, the second comparison
is tested. If #2 is true, the statements following the second comparison are executed, and
so on. If none of the comparisons are true, then the statements following the else
statement are executed. One and only one set of statements will be executed.
switch/case and the menu
functions



switch/case is also a selection type of control structure and very
similar to the if-elseif type of structure. Often if-elseif is used
with numerical conditions while switch/case structures are used
with strings,
In either case, both let you choose one of several paths through
your program based upon some criterion.
The menu function often in conjunction with the switch/case
function lets you use a graphical interface for selecting your
desired condition.
switch/case example
city = input(‘Enter name of city; ‘, ‘s’);
switch city
case ‘Boston’
disp(‘$345’)
case ‘Denver’
disp(‘$150’)
case ‘Honolulu’
disp(‘Stay at Home’)
otherwise
disp(‘Error: Incorrect Entry; Not on file.’)
end
menu function


Used usually in conjunction with the switch/case
function, the menu function causes a menu box to
appear on the screen with a series of buttons that
the user can select. The buttons are determined by
the program. Upon the selection by the user, the
program continues.
In using the menu function, the programmer
specifies the title for the menu box and the names of
the various buttons. From our previous example
menu function example
city = menu(‘Select a city from the menu;’,
‘Boston’, ‘Denver’, ‘Honolulu’);
switch city
case 1
disp(‘$345’)
case 2
disp(‘$150’)
case 3
disp(‘Stay at Home’)
otherwise
disp(‘Error: Incorrect Entry; Not on file.’)
end
Looping


Looping is the third type of control structure, here
some set of statements is executed a number of
times until some condition is met. There are two
types, for loops and while loops.
In general, try to avoid loops, they slow down
MATLAB programs, but it is always best to first get a
program that works and then improve upon is speed
of execution later, i.e., optimize it after you get it
working.
for Loops

Incorporating for statements,
for index = expression
statement 1
statement 2
etc.
end
A typical for statement might look like, “for k = 1:10”. Here k is initially
assigned a value of 1 and the set of statements is executed. Then k is assigned
a value of 2 and the statements are repeated. This continues until k = 10. This
is the last time the statements will be executed, next when k would be assigned
a value of 11, the loop terminates. A more general form for the expression
would be initial_value:increment:final_value but the idea is the same.
while Loops

Incorporating while statements,
while expression
statement 1
statement 2
etc.
end
Here the expression is a relational operation. Upon encountering this while
loop, MATLAB tests the expression. When the expression is true, the
statements between the while statement and end statement are executed.
Then the expression is retested. If it continues to be true, the statements are
executed again. Note you can get trapped here unless the statements in the
while loop modify the variables in the expression. If they don’t you are in an
endless loop, use Ctrl c to get out of an endless loop.
Break and Continue commands




Break command is used to terminate a loop pre-maturely based
upon some condition.
Continue command is used to stop the current pass through the
loop and start a new pass. Here the loop continues whereas for
the Break command, the loop completely terminates.
Break and Continue are commonly used within an if statement
within a loop, that is, if the condition is true, the either the loop
terminates (Break) or the current pass terminates (Continue).
Examples on pages 328 and 329 illustrate the usage of these
two statements.
Midpoint Break Loops

The examples shown on pages 328 and 329 are illustration of
midpoint break loops. Consider the following;
while(1)
. . . do some calculations using x as a variable
if (x < 0.001)
break
end
. . . do some more calculations . . .
end
Final Touches






In MATLAB it is better to avoid loops if you can. Sometimes you can’t,
then go ahead a use them. Watch out for the endless loop.
When using if, else, elseif, switch/case, for, and while statements,
indent your statements and internal control structures so you can see
the control structures more clearly. It helps in debugging and
understanding the flow of the program. Seeing where they start and
end easily is a great help.
Use comment statements liberally to help you understand your control
structures.
Don’t forget to end each control structure with the “end” statement.
It is generally easier on the mind to deal with scalar variables in
relational expressions than vector or matrix variables. Try to keep it
simple.
When you forget the syntax of a statement, use the help feature in the
Command Window to see the online documentation, help if.
Chapters 8 and 9 Assignments


The following assignments will let you
practice using MATLAB control
structures and various commands.
Assignments 8.4, 8.5, 8.14, 9.8, 9.13,
9.15, 9.16 (problem numbers for the
3rd edition text.)
Download