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.