In Matlab, like in C, any nonzero value is considered to be true and zero is false. Boolean operators will return 1 for true.
The boolean operators are:
| Operator | Name | help |
|---|---|---|
| == | is equal to | eq |
| ~= | is not equal to | ne |
| < | is less than | lt |
| <= | is less than or equal to | le |
| > | is greater than | gt |
| >= | is greater than or equal to | ge |
| & | and | and |
| | | or | or |
| ~ | not (unary) | not |
The not operator (~) converts zero entries in a matrix to 1 and all other entries to zero.
The boolean operation xor is implemented as a 2-variable function. xor(a, b) is equivalent to (a | b) - (a & b).
>> A = [-3:3; -2:4; -1:5]
A =
-3 -2 -1 0 1 2 3
-2 -1 0 1 2 3 4
-1 0 1 2 3 4 5
>> ~A
ans =
0 0 0 1 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
With all other operators, if either argument is a scalar, the relational or logical operation is done with that scalar on each element. Otherwise, both matrices must have the same size and the operation is done element wise.
>> A == 4 % all entries equal to 4
ans =
0 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 1 0
>> A > 1 % all entries greater than 1
ans =
0 0 0 0 0 1 1
0 0 0 0 1 1 1
0 0 0 1 1 1 1
The easiest way to zero out all negative entries in a matrix is to multiply the result element wise with the original matrix:
>> (A >= 0) .* A % all entries equal to 0
ans =
0 0 0 0 1 2 3
0 0 0 1 2 3 4
0 0 1 2 3 4 5
>> (rand(size(A)) <= 0.75) .* A % select approximately 75% of the entries of A (why?)
ans =
-3 0 -1 0 1 0 0
-2 -1 0 1 0 0 4
-1 0 1 2 3 0 5
Each of these operators and functions returns a logical matrix. That is, islogical(ans) returns 1. A numeric matrix by default is not a logical matrix, but can be forced into one using the function logical.