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