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. x < y
c. x == y
d. x <= y
e. x >= y
f. x | y
g. x & y
h. x & (~y)
i. (x > y) | (x == y)
j. (x > y) & (x == y)
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
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.