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