Control Statements in Matlab

advertisement
Control Statements in Matlab
Learning
Objectives
How is program
control
implemented in
Matlab.?
What are the simple
output statements?
Are there any
special values?
AE6382 Design Computing
Topics
• IF statement and Logical
Operators
• Switch-Case
• Disp() vs fprintf()
• Input()
• Statement Display Format
• Special Values
• Summary
1
Fall 2006
for loop
done
for
j=1:10
for j=1:10
% computations;
end
computations
•
•
•
•
Repeats for specified number of times
ALWAYS executes computation loop at least once!!!
Can use + or – increments
Can escape (BREAK) out of computational loop
AE6382 Design Computing
2
Fall 2006
while loop
initialize k
done
while
k<10
k=0;
while k<10
% computations;
k=k+1;
end
computations
change k
• Will do computational loop ONLY if while condition is met
• Be careful to initialize while variable
• Can loop forever if while variable is not updated within loop!!!
AE6382 Design Computing
3
Fall 2006
if statements
if
condition
if
condition
false
false
true
true
statements
statements (1)
statements (2)
if A>10
% computations;
else
% computations;
end
if A>10
% computations;
end
• Can include multiple statements
• Statements can also include other if statements (can
nest if statements inside if statements)
• Be careful not to overlap (crossover) if statements!
AE6382 Design Computing
4
Fall 2006
if-elseif statement
if
condition
false
true
statements (1)
elseif
condition
false
…
elseif
condition
false
else
true
statements (2)
statements (n)
statements (n+1)
if A>10
% computations;
elseif A<10
% computations;
else
% computations
end
• Can have several elseif conditions…
• Else is optional and executes if all other tests fail
AE6382 Design Computing
5
Fall 2006
If Statement and Logical Operators
Relational Operators
<
<=
>
>=
==
~=
less than
less than or equal to
Greater than
greater than or equal to
equality
not equal
What if K is an array?
K=ones(5,5)
All elements in K are tested
if K>10
What is the value of K?
K=5
will fail, but
K(2,3)=20;
if K>10
Interpret the following in words
K>10
K*0 ~= 6
AE6382 Design Computing
will also fail becase ALL
elements must be >10.
6
Fall 2006
if Statement and Logical Operators (Cont.)
Logical Operators
OP
not
and
or
xor
Symbol
~
&
|
Note: 0 is false
Anything else is true
A
B
~A
A|B
A&B
A xor B
0
0
1
0
0
0
0
1
1
1
0
1
1
0
0
1
0
1
1
1
0
1
1
0
AE6382 Design Computing
7
Fall 2006
Relational Operators
• When relational operators are present:
– All arithmetic operations are performed first (in their particular
order)
– The relational operators are evaluated after.
• Example 1
– (2*3) > (4+1);
% solve by hand, then type this into MATLAB
- The multiplication and addition are first:
- 6>5
- The relational operator is evaluated:
- 6 is greater than 5, so this returns 1 (true)
AE6382 Design Computing
8
Fall 2006
Examples
a=7; b=4; c=3;
~(a==3*b)
– Evaluates 3*b = 12
– Reads: is (a==12) not (from the ~) true?
– Returns ans = 1 (true)
a > 5 & b > 5
– Evaluates (a>5) and (b>5) separately.
– One returns true, the other returns false.
– Since both are not true, the expression returns false.
AE6382 Design Computing
9
Fall 2006
Using Logicals in Assignments
• True/False values can be assigned to variables.
• The variables will be assigned the value that returns
from relational and/or logical operators.
• The variables will have a value of 1 or 0.
• Example:
– X = a > 2;
• Then x = 1;
– Y = b==5;
• Y will be equal to 0.
AE6382 Design Computing
10
Fall 2006
More Examples
a=6; b=10; c=-2;
• Try the following examples without the use of Matlab:
– X1 = abs(c)>3 & c<(b-a) & b+a > 3
– X2 = (b==10) | (a< 4)
– X3 = a.*5 >= b.*3 & c < a
AE6382 Design Computing
11
Fall 2006
Operator precedence
1. transpose (.'), power (.^), complex conjugate, transpose ('), matrix
power (^)
2. unary plus (+), unary minus (-), logical negation (~)
3. multiplication (.*), right division (./), left division (.\), matrix
multiplication (*), matrix right division (/), matrix left division (\)
4. addition (+), subtraction (-)
5. colon operator (:)
6. less than (<), less than or equal to (<=), greater than (>), greater than
or equal to (>=), equal to (==), not equal to (~=)
7. logical AND (&)
8. logical OR ( | )
AE6382 Design Computing
12
Fall 2006
Practice
• Evaluate the following without Matlab:
– Practice without the help of Matlab because you will not be able
to use Matlab in the midterm.
–
–
–
–
–
a = 4; b = 20; c = 12; d = 5;
One = a>4 & b==20
Two = b<40 | c>10
Three = d.*c > a.*b
Four = b.*3<= 100 & d<10 & a.*d==b
AE6382 Design Computing
13
Fall 2006
More practice
• When comparing vectors, the operator (>, <=, ~, &,
etc.) is applied element-by-element:
a = [0,2,4,2];
b = [4,1,-2,3];
• What is:
– C = a .* b;
– C = b.^2-a.*b
– C = a >= b;
AE6382 Design Computing
14
Fall 2006
If statement example
%DEMO
%Header
function output = DEMO(input)
%put help info here!
%Do stuff
if input > 0
fprintf(‘Greater than 0’)
elseif input < 0
fprintf(‘Less than 0’)
else
fprintf(‘Equals Zero’)
end
%Set return value if needed
outvar = 1;
AE6382 Design Computing
15
What’s an alternative
to the if statement?
Fall 2006
Switch-Case Statement
switch expression
case condition_1
%Do Stuff #1
case {condition_2a, condition_2b,…}
%Do Stuff #2
…
otherwise
%Do Other Stuff
end
How does this relate to the ‘if’ statement?
AE6382 Design Computing
16
Fall 2006
Switch-case statement example
x=2.5;
units=‘m’;
switch units
%convert to centimeters
case {‘inch’,’in’}
y=x.*2.54;
case {‘feet’,’ft’}
y=x.*2.54.*12;
case {‘meter’,’m’}
y=x./100;
case {‘centimeter’,’cm’}
y=x;
otherwise
disp([‘Unknown units: ‘ units])
y=NaN;
end
AE6382 Design Computing
17
Fall 2006
Display Formats
Enter the following Matrix into Matlab…
M = [55.3 -22 12; 10 23.4324 30.42]
Let’s explore each format:
COMMAND
format short
format long
format short e
format long e
format bank
format +
AE6382 Design Computing
FUNCTION
default
14 decimals
4 decimals
15 decimals
2 decimals
+,-,blank
18
Fall 2006
Disp() and fprintf()
• disp(X) – prints elements of an array X
• disp(‘hello world’) – prints the string
• fprintf(fid, format, A) – does the following:
– Write A to file fid using format
(omitting fid prints to screen)
– format is a string containing output string and format
instructions for each variable in A
– Variables of all printable data types:
Conversion specifications involve the character %, optional
flags, optional width and precision fields, optional subtype
specifier, and conversion characters: d, i, o, u, x, X, f, e, E, g, G,
c, and s.
– The special formats \n,\r,\t,\b,\f can be used to produce linefeed,
carriage return, tab, backspace, and formfeed characters
respectively.
• Let’s use DEMO to explore these differences.
• We will discuss I/O in further depth in a later lecture
AE6382 Design Computing
19
Fall 2006
Demonstration Problem
% This program will calculate the
% area and circumference of ten circles,
% allowing the radius as an input,
% but will only provide output for circles
% with an area that exceeds 20.
N = 0; R = 0.0; AREA = 0.0; CIRC = 0.0;
for J = 1:1:10
R = input('Please enter the radius: ');
AREA = pi * R^2;
CIRC = 2.0 * pi * R;
if AREA > 20.0
fprintf('\n Radius = %f units',R)
fprintf('\n Area = %f units squared', AREA)
fprintf('\n Circumference = %f units\n', CIRC)
else
N = N + 1;
end
end
fprintf('\n Number of circles that do not have area > 20: %.0f \n', N)
AE6382 Design Computing
20
Fall 2006
Getting User Input
• How do I prompt user for input?
Myvariable = input(‘Some String’);
• How can I format this better for the user?
Myvariable = input(‘Another String’, ‘s’);
• What’s the difference between the two input lines?
AE6382 Design Computing
21
Fall 2006
Special Values
These objects have special meanings in Matlab:
pi i,j inf -
the value 3.1416 (How would I see more values?)
sqrt(-1) (How is this represented?)
infinity (How can you prove this represents
infinity?)
NaN- “Not a number” (When do we get this message?)
clock- matrix with date and time
date – Current date in string form
eps – “Epsilon” the smallest amount by which two
values can differ on the current computer
ans – just computed value
AE6382 Design Computing
22
Fall 2006
Summary
Topics
• IF statement and
Logical Operators
• Switch-Case
• Disp() vs fprintf()
• Input()
• Statement Display
Format
• Special Values
• Summary
AE6382 Design Computing
Action Items
• Review the lecture
• Work out the simple
control statement
examples
• How do these compare to
other languages you have
used?
23
Fall 2006
Problem Statements
Sequential computation
1 Draw a flowchart and write the MatLab code that
• will calculate the area and the circumference of a circle
• allow the radius to be an input variable
• output radius, area and circumference.
Introduce ‘if’ structure
2 Draw a flowchart and write the MatLab code that
• will calculate the area and the circumference of a circle
• allow the radius to be an input variable
• output radius, area and circumference IF the area is greater
than 20 square units.
AE6382 Design Computing
24
Fall 2006
Problem Statements … contd.
Introduce ‘for’ loop
3 Draw a flowchart and write the MatLab code that
• will calculate the area and the circumference of TEN circles
• allow the radius to be an input variable
• output radius, area and circumference IF the area is greater
than 20 square units.
• output the number of circles with area  20.
Introduce ‘while’ loop
4 Draw a flowchart and write the MatLab code that
• will calculate the area and the circumference of ANY NUMBER
of circles
• allow the radius to be an input variable
• output radius, area and circumference IF the area is greater
than 20 square units.
• output the number of circles with area  20.
AE6382 Design Computing
25
Fall 2006
Download