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