fall 2006ae6382 design computing1 control statements in matlab topics if statement and logical...

25
Fall 2006 AE6382 Design Computing 1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement Display Format Special Values Summary Learning Objectives How is program control implemented in Matlab.? What are the simple output statements? Are there any special values?

Upload: lily-moody

Post on 01-Jan-2016

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 1

Control Statements in Matlab

Topics• IF statement and Logical

Operators• Switch-Case • Disp() vs fprintf()• Input()• Statement Display Format• Special Values• Summary

Learning Objectives

How is program control implemented in Matlab.?

What are the simple output statements?

Are there any special values?

Page 2: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 2

for loop

• Repeats for specified number of times• ALWAYS executes computation loop at least once!!!• Can use + or – increments• Can escape (BREAK) out of computational loop

forj=1:10

computations

done

for j=1:10 % computations;end

Page 3: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 3

while loop

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

whilek<10

computations

done

change k

initialize k

k=0;while k<10 % computations; k=k+1;end

Page 4: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 4

if statements

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

if A>10

% computations;

end

ifcondition

statements

true

false

if A>10 % computations;else % computations;end

ifcondition

statements (1)

true false

statements (2)

Page 5: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 5

if-elseif statement

• Can have several elseif conditions…• Else is optional and executes if all other tests fail

if A>10 % computations;elseif A<10 % computations;else % computationsend

ifcondition

statements (1)

true

false elseifcondition

elseifcondition

statements (2) statements (n)

false

…true

statements (n+1)

falseelse

Page 6: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 6

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 is the value of K?

K=5

Interpret the following in words

K>10

K*0 ~= 6

What if K is an array?

K=ones(5,5)

All elements in K are tested

if K>10

will fail, but

K(2,3)=20;

if K>10

will also fail becase ALL elements must be >10.

Page 7: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 7

if Statement and Logical Operators (Cont.)

Logical Operators

OP Symbolnot ~and &or |xor

Note: 0 is falseAnything else is true

011011

101001

101110

000100

A xor BA&BA|B~ABA

Page 8: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 8

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)

Page 9: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 9

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.

Page 10: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 10

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.

Page 11: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 11

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

Page 12: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 12

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

Page 13: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 13

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

Page 14: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 14

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;

Page 15: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 15

If statement example

%DEMO%Headerfunction output = DEMO(input)

%put help info here!

%Do stuffif input > 0

fprintf(‘Greater than 0’)elseif input < 0

fprintf(‘Less than 0’)else

fprintf(‘Equals Zero’)end

%Set return value if neededoutvar = 1;

What’s an alternative to the if statement?

Page 16: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 16

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?

Page 17: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 17

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

Page 18: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 18

Display Formats

Let’s explore each format:

COMMAND FUNCTION

format short default

format long 14 decimals

format short e 4 decimals

format long e 15 decimals

format bank 2 decimals

format + +,-,blank

M = [55.3 -22 12; 10 23.4324 30.42]

Enter the following Matrix into Matlab…

Page 19: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 19

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

Page 20: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 20

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)

Page 21: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 21

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?

Page 22: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 22

Special Values

These objects have special meanings in Matlab:

pi - the value 3.1416 (How would I see more values?)

i,j - sqrt(-1) (How is this represented?)

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

Page 23: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 23

Summary

Action Items

• Review the lecture

• Work out the simple control statement examples

• How do these compare to other languages you have used?

Topics• IF statement and

Logical Operators• Switch-Case • Disp() vs fprintf()• Input()• Statement Display

Format• Special Values• Summary

Page 24: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 24

Problem Statements

Sequential computation1 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’ structure2 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.

Page 25: Fall 2006AE6382 Design Computing1 Control Statements in Matlab Topics IF statement and Logical Operators Switch-Case Disp() vs fprintf() Input() Statement

Fall 2006AE6382 Design Computing 25

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.