Exercises on Relational and Logical Operations

The following exercises are meant to be answered by a single MATLAB command. The command may be involved (i.e., it may use a number of parentheses or calls to functions) but can, in essence, be solved by the execution of a single command. If the command is too complicated, feel free to break it up over two or more lines.

[Back to main page] [Back to exercises page]
```1. Given that x = [1 5 2 8 9 0 1] and y = [5 2 2 6 0 0 2], execute and
explain the results of the following commands:

a. x > y
b. y < x
c. x == y
d. x <= y
e. y >= x
f. x | y
g. x & y
h. x & (~y)
i. (x > y) | (y < x)
j. (x > y) & (y < x)

2. The exercises here show the techniques of logical-indexing (indexing with
0-1 vectors). Given x = 1:10 and y = [3 1 5 6 8 2 9 4 7 0], execute and
interpret the results of the following commands:

a. (x > 3) & (x < 8)
b. x(x > 5)
c. y(x <= 4)
d. x( (x < 2) | (x >= 8) )
e. y( (x < 2) | (x >= 8) )
f. x(y < 0)

3. The introduction of the logical data type in v5.3 has forced some changes in
the use of non-logical 0-1 vectors as indices for subscripting.  You can see the
differences by executing the following commands that attempt to extract the elements
of y that correspond to either the odd (a.) or even (b.) elements of x:

a. y(rem(x,2))  vs.  y(logical(rem(x,2)))
b. y(~rem(x,2)) vs.  y(~logical(rem(x,2)))

4. Given x = [3 15 9 12 -1 0 -12 9 6 1], provide the command(s) that will

a. ... set the values of x that are positive to zero
b. ... set values that are multiples of 3 to 3 (rem will help here)
c. ... multiply the values of x that are even by 5
d. ... extract the values of x that are greater than 10 into a vector called y
e. ... set the values in x that are less than the mean to zero
f. ... set the values in x that are above the mean to their difference from the mean
ans.

5. Create the vector x = randperm(35) and then evaluate the following function using
only logical indexing:

y(x) = 2          if x < 6
= x - 4      if 6 <= x < 20
= 36 - x    if 20 <= x <= 35

You can check your answer by plotting y vs. x with symbols.  The curve should be
a triangular shape, always above zero and with a maximum of 16.  It might also be
useful to try setting x to 1:35.  Using multiple steps (or a simple Mfile) is
recommended for this problem.
ans.

```

[Back to main page] [Back to exercises page]
Comments? Contact Jim Maneval at maneval@bucknell.edu