Bird
Raised Fist0
MATLABdata~5 mins

Logical indexing in MATLAB - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Logical indexing
O(n)
Understanding Time Complexity

Logical indexing lets us pick elements from an array using true or false values. We want to know how the time to do this changes as the array gets bigger.

How does the work grow when we select elements this way?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


A = rand(1, n);          % Create an array of n random numbers
idx = A > 0.5;           % Logical array where elements > 0.5 are true
B = A(idx);              % Select elements where idx is true
    

This code creates an array, finds which elements are bigger than 0.5, and then selects those elements.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Checking each element of A to see if it is greater than 0.5.
  • How many times: Once for each element in the array, so n times.
How Execution Grows With Input

Explain the growth pattern intuitively.

Input Size (n)Approx. Operations
10About 10 checks
100About 100 checks
1000About 1000 checks

Pattern observation: The number of operations grows directly with the size of the array. Double the size, double the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to select elements grows in a straight line with the number of elements.

Common Mistake

[X] Wrong: "Logical indexing is instant no matter how big the array is."

[OK] Correct: Even though logical indexing looks simple, MATLAB must check each element once, so bigger arrays take more time.

Interview Connect

Understanding how logical indexing scales helps you write efficient code and explain your choices clearly in interviews. It shows you know how data size affects performance.

Self-Check

"What if we used a loop to select elements instead of logical indexing? How would the time complexity change?"

Practice

(1/5)
1. What does logical indexing in MATLAB allow you to do with an array A and a logical array L of the same size?
easy
A. Sort the elements of A based on L
B. Select elements of A where L is true
C. Change the size of A to match L
D. Convert A into a logical array

Solution

  1. Step 1: Understand logical indexing concept

    Logical indexing uses a logical array to pick elements from another array where the logical array is true.
  2. Step 2: Apply to arrays A and L

    Elements of A are selected only where L has true values, filtering A.
  3. Final Answer:

    Select elements of A where L is true -> Option B
  4. Quick Check:

    Logical indexing = select elements [OK]
Hint: Logical array true picks elements from original array [OK]
Common Mistakes:
  • Thinking logical indexing changes array size arbitrarily
  • Confusing logical indexing with sorting
  • Assuming logical indexing converts data types
2. Which of the following is the correct syntax to select elements of vector v that are greater than 5 using logical indexing?
easy
A. v(v > 5)
B. v > 5(v)
C. v{v > 5}
D. v[v > 5]

Solution

  1. Step 1: Identify correct logical indexing syntax

    In MATLAB, logical indexing uses parentheses with a logical condition inside, like v(condition).
  2. Step 2: Check each option

    v(v > 5) uses v(v > 5), which is correct syntax. The other options use invalid indexing forms.
  3. Final Answer:

    v(v > 5) -> Option A
  4. Quick Check:

    Logical indexing syntax = v(condition) [OK]
Hint: Use parentheses with condition inside for logical indexing [OK]
Common Mistakes:
  • Using curly braces or square brackets for logical indexing
  • Placing condition outside parentheses
  • Confusing logical indexing with cell or array indexing
3. Given A = [3, 7, 2, 9, 5], what is the result of A(A > 4)?
medium
A. [2, 5]
B. [3, 7, 2, 9, 5]
C. [7, 9]
D. [7, 9, 5]

Solution

  1. Step 1: Create logical array for condition A > 4

    Check each element: 3>4?false, 7>4?true, 2>4?false, 9>4?true, 5>4?true. Logical array = [false, true, false, true, true].
  2. Step 2: Select elements of A where logical array is true

    Elements at true positions: 7, 9, 5.
  3. Final Answer:

    [7, 9, 5] -> Option D
  4. Quick Check:

    Elements > 4 = [7, 9, 5] [OK]
Hint: Filter elements by condition, then pick true positions [OK]
Common Mistakes:
  • Including elements not greater than 4
  • Confusing logical indexing with logical AND operation
  • Returning original array instead of filtered
4. What is wrong with this MATLAB code snippet?
A = [1, 4, 6, 8];
L = [true, false];
B = A(L);
medium
A. Logical array L size does not match A size
B. Logical array L must contain only numeric values
C. Cannot use logical indexing on row vectors
D. Syntax error in logical indexing

Solution

  1. Step 1: Check sizes of A and L

    A has 4 elements, L has 2 elements. Logical indexing requires L to be same size as A.
  2. Step 2: Identify error cause

    Since sizes differ, MATLAB will give an error when using L to index A.
  3. Final Answer:

    Logical array L size does not match A size -> Option A
  4. Quick Check:

    Logical array size must match data size [OK]
Hint: Logical array must be same size as indexed array [OK]
Common Mistakes:
  • Assuming logical array can be smaller
  • Thinking logical array must be numeric
  • Believing logical indexing syntax is wrong here
5. You have a matrix M = [2, 5, 8; 1, 7, 3; 4, 6, 9]. How do you replace all elements less than 5 with zero using logical indexing?
hard
A. M(M <= 5) = 0;
B. M(M > 5) = 0;
C. M(M < 5) = 0;
D. M(M == 5) = 0;

Solution

  1. Step 1: Identify elements less than 5 in M

    Elements less than 5 are 2, 1, 3, 4.
  2. Step 2: Use logical indexing to assign zero to these elements

    Using M(M < 5) = 0; replaces all elements less than 5 with zero.
  3. Final Answer:

    M(M < 5) = 0; -> Option C
  4. Quick Check:

    Replace elements < 5 with 0 using M(M < 5) = 0 [OK]
Hint: Use condition inside parentheses to assign new values [OK]
Common Mistakes:
  • Replacing wrong elements by using > or == instead of <
  • Using incorrect logical operators
  • Trying to assign without logical indexing
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