Bird
Raised Fist0
MATLABdata~5 mins

Logical operators (&, |, ~) in MATLAB

Choose your learning style10 modes available
Introduction

Logical operators help you check if conditions are true or false. They let you combine or change these true/false values easily.

When you want to check if two things are both true at the same time.
When you want to see if at least one of several things is true.
When you want to flip a true to false or false to true.
When you need to filter data based on multiple conditions.
When you want to control the flow of your program based on combined conditions.
Syntax
MATLAB
A & B  % Logical AND: true if both A and B are true
A | B  % Logical OR: true if A or B (or both) are true
~A     % Logical NOT: true if A is false, false if A is true

Use & to check if both conditions are true.

Use | to check if at least one condition is true.

Examples
This checks if x is greater than 0 AND y is greater than 5. Both are true, so result is true (1).
MATLAB
x = 5;
y = 10;
result = (x > 0) & (y > 5);
This checks if a is greater than 5 OR b is greater than 5. a is false, b is true, so result is true (1).
MATLAB
a = 3;
b = 7;
result = (a > 5) | (b > 5);
This flips the value of flag. Since flag is true, result becomes false (0).
MATLAB
flag = true;
result = ~flag;
Sample Program

This program uses logical AND, OR, and NOT to compare numbers and prints the results as 1 (true) or 0 (false).

MATLAB
x = 8;
y = 3;

% Check if x is greater than 5 AND y is less than 5
and_result = (x > 5) & (y < 5);

% Check if x is less than 5 OR y is less than 5
or_result = (x < 5) | (y < 5);

% Flip the value of and_result
not_result = ~and_result;

fprintf('AND result: %d\n', and_result);
fprintf('OR result: %d\n', or_result);
fprintf('NOT result: %d\n', not_result);
OutputSuccess
Important Notes

Logical operators return 1 for true and 0 for false in MATLAB.

Use parentheses to group conditions clearly.

Logical NOT (~) only needs one input and flips its truth value.

Summary

Use & to check if both conditions are true.

Use | to check if at least one condition is true.

Use ~ to flip true to false or false to true.

Practice

(1/5)
1. Which logical operator in MATLAB returns true only if both conditions are true?
easy
A. ~ (NOT)
B. & (AND)
C. | (OR)
D. ^ (XOR)

Solution

  1. Step 1: Understand the AND operator

    The & operator returns true only when both conditions it compares are true.
  2. Step 2: Compare with other operators

    The | operator returns true if at least one condition is true, ~ negates a condition, and ^ is XOR which returns true if exactly one condition is true.
  3. Final Answer:

    & (AND) -> Option B
  4. Quick Check:

    Both true = true means AND = & [OK]
Hint: AND means both true, use & operator [OK]
Common Mistakes:
  • Confusing & with | operator
  • Thinking ~ returns true if both true
  • Mixing XOR (^) with AND (&)
2. Which of the following is the correct syntax to negate a logical variable a in MATLAB?
easy
A. not a
B. !a
C. ~a
D. a~

Solution

  1. Step 1: Recall MATLAB negation syntax

    In MATLAB, the negation operator is ~ placed before the variable to flip its logical value.
  2. Step 2: Check each option

    not a uses 'not' which is not valid syntax, C uses '!' which is not MATLAB syntax, and D places '~' after the variable which is incorrect.
  3. Final Answer:

    ~a -> Option C
  4. Quick Check:

    Negate with ~ before variable [OK]
Hint: Use ~ before variable to negate in MATLAB [OK]
Common Mistakes:
  • Using ! instead of ~ for negation
  • Writing negation after variable
  • Using 'not' keyword which is invalid
3. What is the output of the following MATLAB code?
a = true; b = false; c = a & ~b;
medium
A. true
B. false
C. 1
D. 0

Solution

  1. Step 1: Evaluate ~b

    Since b is false, ~b is true.
  2. Step 2: Evaluate a & ~b

    Both a and ~b are true, so a & ~b is true.
  3. Final Answer:

    true -> Option A
  4. Quick Check:

    true AND true = true [OK]
Hint: Negate false to true, then AND with true gives true [OK]
Common Mistakes:
  • Confusing logical true/false with numeric 1/0
  • Forgetting to negate b
  • Assuming & acts like | (OR)
4. Identify the error in this MATLAB code snippet:
a = true;
b = false;
c = a | ~ b;
medium
A. No error, code runs correctly
B. Incorrect use of | operator
C. Extra space between ~ and b causes error
D. Missing parentheses around ~b

Solution

  1. Step 1: Check operator usage

    The | operator is correctly used to perform logical OR between a and ~b.
  2. Step 2: Check negation syntax

    The negation operator ~ can have a space before the variable; MATLAB ignores spaces here.
  3. Final Answer:

    No error, code runs correctly -> Option A
  4. Quick Check:

    Logical OR with negation syntax is valid [OK]
Hint: Spaces around ~ do not cause errors in MATLAB [OK]
Common Mistakes:
  • Thinking ~ needs parentheses always
  • Assuming space causes syntax error
  • Confusing | with & operator
5. Given logical variables x = [true false true] and y = [false true true], what is the result of z = ~(x & y) | (x | y) in MATLAB?
hard
A. [false false false]
B. [false true true]
C. [true false true]
D. [true true true]

Solution

  1. Step 1: Calculate x & y element-wise

    x = [true false true], y = [false true true]
    x & y = [true & false, false & true, true & true] = [false, false, true]
  2. Step 2: Negate x & y

    ~(x & y) = [~false, ~false, ~true] = [true, true, false]
  3. Step 3: Calculate x | y element-wise

    x | y = [true | false, false | true, true | true] = [true, true, true]
  4. Step 4: Calculate final expression

    z = ~(x & y) | (x | y) = [true | true, true | true, false | true] = [true, true, true]
  5. Final Answer:

    [true true true] -> Option D
  6. Quick Check:

    Element-wise logic with ~, &, | gives all true [OK]
Hint: Calculate & first, then ~, then | element-wise [OK]
Common Mistakes:
  • Forgetting element-wise operation
  • Negating before AND instead of after
  • Mixing up & and | precedence
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard