520 likes | 641 Views
Module 5 . Decision-Making Programs. CW 5.1 (1/2 sheet;No name). Provide your response to the following questions on a ½ sheet of paper. 1. What aspects of the class interested you? 2. What helped you understand the ideas discussed? 3. What do you think is useful for your future study?.
E N D
Module 5 Decision-Making Programs
CW 5.1 (1/2 sheet;No name) Provide your response to the following questions on a ½ sheet of paper. 1. What aspects of the class interested you? 2. What helped you understand the ideas discussed? 3. What do you think is useful for your future study?
CW 5.1 cont’d 4. What would you change about this class in the immediate future to make it a more enjoyable or satisfying learning experience for you? Be as specific as possible please. 5. What ideas did you encounter in the last semester that you would have difficulty? And why?
Elaboration Organization Rehearsal Input Short-term Sensory Store Attention Storage Long-term Memory Working Memory Retrieval Memory Loss Memory Loss A Model of the Information Processing System (IPS) 4
Examples of Relational Ops >> x = 2; y = 5; >> z = x < y % or >> z = (x < y) >> u = x == y % or >> u = (x == y)
Relational Ops on Arrays >> x = [6 3 9]; y = [14 2 9]; >> z = (x < y) >> u = (x ~= y) >> v = (x > 8) >> w = x (x<y)
Relational and Arithmetic Ops • Arithmetic Ops have precedence over Relational Ops • What are the differences below? • >> z = 5 > 2 + 7 • >> z = 5 > (2 + 7) • >> z =(5 > 2) + 7
Precedence among Relational Ops • MATLAB evaluates Relational Ops from left to right • What are the differences below? • >> z = 5 > 3 ~= 1 • >> z = (5 > 3) ~= 1
Logical Class in MATLAB • logical variables only hold the values 1 (true) and 0 (false) • Below w is a numeric array and k is a logical array >> x = [ -2 : 2 ] >> k = (abs(x) > 1) >> z = x(k) >> w = [1 0 0 0 1] >> v = x(w)
Logical Function • return an array that is used for logical indexing or logical tests • if A is a numeric array, then >> B = logical(A) returns a logical array B. • Back to the question before, >> w = logical([1 0 0 0 1]) >> v = x(w)
Accessing Arrays using Logical Arrays >> A = [5 6 7; 8 9 10; 11 12 13] >> B = logical(eye(3)) >> C = A(B) Now try >> D = A(eye(3))
Examples of Logical Op ~ >> x = [0 3 9]; y = [14 -2 9]; >> a = ~x >> b = ~x > y >> c = ~(x > y) >> d = (x <= y)
Examples of Logical Op & Compare two arrays of the same dim >> z = 0&3 >> z = 2&3 >> z = 0&0 >> z = [5 -3 0 0]&[2 4 0 5] >> z = 1&2+3 >> z = 5<6&1
Examples of Logical Op & … >> x=[6 3 9];y=[14 2 9];a=[4 3 12]; >> z = (x>y) & a >> z = (x>y)&(x>a) In math, 5 < x < 10. In MATLAB, >> (5<x) & (x< 10)
Examples of Logical Op | >> z = 0|3 >> z = 0|0 >> z = [5 -3 0 0]|[2 4 0 5] >> z = 3<5|4==7 >> z = (3<5) | (4==7)
Examples of Logical Op | … >> z = 1|0&1 >> z = (1|0)&1 >> z = 1|0&0 >> z = 1|(0&0) >> z = ~3==7|4==6 >> z = ((~3)==7)|(4==6)
Exclusive OR (xor) fcn xor(A,B) = 1 if either A or B is nonzero but not both = 0 if A and B are both zero or both nonzero In MATLAB, Function z = xor(A,B) z = (A|B) & ~ (A&B);
Examples of xor fcn >> a = xor([3 0 6], [5 0 0]) >> b =[3 0 6] | [5 0 0]
CW 5.2 1. Determine the answers by hand. Use MATLAB to check your answer. a. If x = [5 -3 18 4] and y = [-9 13 7 4] a = ~y > x b = x&y c = x|y d = xor(x,y) b. If x=[-9 -6 0 2 5] and y=[-10 -6 2 4 6] e = (x < y) f = (x > y) g = (x ~= y) h = (x == y) i = (x > 2)
CW 5.2 2. Follow the MATLAB instructions below. Compare your results with the Truth Table. >> x = [1 1 0 0]’ >> y = [1; 0; 1; 0] >> Truth_Table=[x,y,~x,x|y, x&y, xor(x,y)]
Examples of logical fcns >> x = [-2 0 4]; >> y = find(x) >> x = [6 3 9 11]; y = [14 2 9 13]; >> values = x (x<y) >> how_many = length(values) >> indices = find(x<y)
Examples of logical fcns >> x = [5 -3 0 0 8]; y = [2 4 0 5 7]; >> z = find(x&y) >> values = y (x&y) >> how_many = length(values)
Conditional Statements MATLAB cond stmts include • if • else • elseif • end
if Statement Basic form if logical expression statements end
if Example 1 Math: y = only if x ≥ 0 English: If x is greater than or equal to zero compute y from y = MATLAB: >> if x >= 0 >> y = sqrt(x) >> end
if Example 1 Shortened form is allowed but less readable >> if x >= 0, y = sqrt(x), end
if Example 2 >> x = 5; y = 2; >> z = 0; >> if (x>0) & (y>0) z = sqrt(x) + sqrt(y) w = log(x) - 3 * log(y) end
else Statement Basic form if logical expression statements 1 else statements 2 end
else Example 1 Suppose that y = for x ≥ 0 and that y = ex – 1 for x < 0 >> if x >= 0 y = sqrt(x) else y = exp(x) – 1 end
else Example 2 Consider the following. Predict what should be the response. >> x = [4 -9 25]; if x < 0 disp(‘some elements are –ve’) else y = sqrt(x), end
else Example 2 Now consider the following. >> x = [4 -9 25]; if x >= 0 y = sqrt(x) else disp(‘some elements are –ve’) end
elseif Statement if logical expression 1 statements 1 elseif logical expression 2 statements 2 else statements 3 end
elseif Example 1 Suppose that y = ln x if x ≥ 5 and that y = if 0 ≤x < 5
elseif Example 1 >> if x >= 5 y = log(x) else if x >= 0 y = sqrt(x) end end
elseif Example 1 improved >> if x >= 5 y = log(x) elseif x >= 0 y = sqrt(x) end
CW 5.3 (attach all printed codes) Suppose that x = [-4 -1 0 2 10] and y = [-5 -2 2 5 9]. Find the values and the indices of the elements in x that are greater than the corresponding elements in y
CW 5.3 • 2. Suppose that y = ln x for x > 10 • y = for 0 ≤ x ≤ 10 • and y = ex -1 for x < 0 • Write the shortest codes using if/else/elseif stmts • Test value using x = -3, 5 and 12
CW 5.4 (Lab) 1. Given a number x and the quadrant q (q = 1, 2, 3, 4), write a program to compute sin-1(x) in degrees, taking into account the quadrant. The program should display an error message if |x| > 1.
String variable Contains variable >> number = 123; >> street_num = ‘123’; What is the difference?
Addressing string variable Consider >> sch_name = ‘Mark Keppel High’ >> length(sch_name) >> sch_name(4:6)
Prompt for response >> reply = input(‘Continue? Y/N [Y]: ’, ‘s’); >> if (isempty(reply))|reply==‘Y’|reply==‘y’) reply = ‘Y’ else reply = ‘N’ end
for Loops Repeating a calculation a number of times Typical structure >> for loop_variable = start : step : end stmts end