Module 5 Decision-Making Programs. CW 5.1 (1/2 sheet;No name) Provide your response to the following...

52
Module 5 Decision-Making Programs

Transcript of Module 5 Decision-Making Programs. CW 5.1 (1/2 sheet;No name) Provide your response to the following...

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?

A Model of the Information A Model of the Information Processing System (IPS)Processing System (IPS)

Short-term

Sensory Store

Input

Memory Loss Memory Loss

Rehearsal

Working Memory

Long-term Memory

Storage

Retrieval

Attention

Elaboration

Organization

44

Relational Operators

Relational operator

Meaning

< Less than

<= Less than or equal to

> Greater than

>= Greater than or equal to

== Equal to

~= Not equal to

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

Logical (Boolean) OperatorsOperator

Name Definition

~A NOT return a new array of same size, has ones where A is zero and zeros where A is nonzero

A&B AND return a new array of same size, has ones where A and B are nonzero and zeros where either A or B is zero

| OR return a new array of same size, has ones where A and/or B are nonzero and zeros where both A and B are zero

Logical OperatorsOperator

Name Definition

&& Short-Circuit AND

return true if both A and B truereturn false if both A and B false

|| Short-Circuit OR

return true if either A or B or both truereturn false if both A and B false

Order of PrecedencePrecedence

Operator Type

Highest Parentheses; start fr innermost pair

Higher Arithmetic ops and logical NOT (~); left to right

Medium Relational ops; left to right

Lower Logical AND

Lowest Logical OR

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]

Truth Table

x y ~x x|y x&y xor(x,y)

T T F T T F

T F F T F T

F T T T F T

F F T F F F

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

Logical Fcns Lgc fcn Definition

all(x) a scalar, 1 or 0. 1 if all elements are nonzero

all(A) a row vector having the same # of columns as A. 1 if all elements in a column are nonzero

any(x) a scalar, 1 or 0. 1 if any element is nonzero

any(A) a row vector having the same # of columns as A. 1 if any element in a column is nonzero

find(A) an array having the indices of nonzero elements of array A

Logical Fcns Lgc fcn Definition

[u,v,w]= find(A)

arrays u & v contain row & col indices of nonzero elements of A; w contain the nonzero elements; w is optional

finite(A)

an array same dim as A w/ ones where element of A is finite

ischar(A)

a scalar 1 if A is a character array

isempty(A)

A scalar 1 if A is an empty array

isinf(A) An array same dim as A w/ones where element of A is ‘inf’

Logical Fcns Lgc fcn Definition

isnan(A) an array same dim as A w/ ones where element of A is ‘NaN’

isnumeric(A) a scalar, 1 or 0. 1 if A is a numeric array

isreal(A) a scalar, 1 or 0. 1 if all elements of A are NON imaginary

logical(A) Convert all elements of A into logical values

xor(A,B) Exclusive or on each element ‘pair’of A and B

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

x

x

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 2Consider 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 2Now 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)

1. 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.32. 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 variableContains variable

>> number = 123;

>> street_num = ‘123’;

What is the difference?

Addressing string variableConsider

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

for Loops example

>> for k = 5 : 10 : 35

x = k^2

end

Short but not that readable

>> for k = 0 : 2 : 10, y = sqrt(k), end

CW 5.5

1. Write a script file to compute the sum of the first 15 terms in the series 5k2 – 2k, where k = 3, 4, … , 18

2. Write a script file to plot

15 + 10 x ≥ 9

y = 10 x + 10 0 ≤ x < 9

10 x < 0