Relational expressions in MATLAB - Time & Space Complexity
Relational expressions compare values and return true or false. We want to see how the time to evaluate these expressions changes as input size grows.
How does the number of comparisons grow when we check many values?
Analyze the time complexity of the following code snippet.
A = rand(1, n); % Create an array of n random numbers
count = 0;
for i = 1:n
if A(i) > 0.5
count = count + 1;
end
end
This code counts how many numbers in the array are greater than 0.5 using a relational expression inside a loop.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The relational check
A(i) > 0.5inside the loop. - How many times: This check runs once for each element, so
ntimes.
Each new element adds one more comparison. So if you double the input size, you double the work.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 comparisons |
| 100 | 100 comparisons |
| 1000 | 1000 comparisons |
Pattern observation: The number of operations grows directly with the input size.
Time Complexity: O(n)
This means the time to finish grows in a straight line as the input gets bigger.
[X] Wrong: "Relational expressions inside loops run in constant time no matter the input size."
[OK] Correct: Each relational check happens once per element, so more elements mean more checks and more time.
Understanding how simple comparisons add up helps you explain how your code scales. This skill shows you can think about efficiency clearly.
"What if we replaced the loop with a vectorized relational expression? How would the time complexity change?"
Practice
Solution
Step 1: Understand the meaning of relational operators
The operator==checks equality,~=checks inequality, and>=,<=check greater or equal and less or equal respectively.Step 2: Identify the operator for NOT equal
The operator~=means NOT equal in MATLAB.Final Answer:
~= -> Option DQuick Check:
NOT equal operator = ~= [OK]
- Confusing == with ~=
- Using = instead of ==
- Mixing up >= and >
a is greater than or equal to 10 in MATLAB?Solution
Step 1: Recall MATLAB relational operator syntax
MATLAB uses >= to mean greater than or equal to.Step 2: Check each option for correct syntax
a >= 10 uses >= correctly. Options A, B, and C use invalid or reversed operators.Final Answer:
a >= 10 -> Option BQuick Check:
Greater or equal operator = >= [OK]
- Writing => instead of >=
- Writing =< instead of <=
- Adding extra = signs
a = 5; b = 7;
result = (a < b) & (b <= 7);
disp(result);
Solution
Step 1: Evaluate each relational expression
a < b is 5 < 7 which is true (1). b <= 7 is 7 <= 7 which is true (1).Step 2: Apply logical AND operator &
Both expressions are true, so (1 & 1) equals 1 (true).Final Answer:
1 -> Option AQuick Check:
True & True = 1 [OK]
- Confusing & with &&
- Expecting output as logical word instead of 1
- Misreading <= operator
x = 10;
if x = 10
disp('Equal to 10');
end
Solution
Step 1: Check the if condition syntax
In MATLAB, = is assignment, == is comparison. Using = in if causes error.Step 2: Confirm other parts are correct
Semicolon after disp is optional, end is correctly used, x is initialized.Final Answer:
Using = instead of == in if condition -> Option AQuick Check:
Comparison needs ==, not = [OK]
- Using = instead of ==
- Thinking semicolon is mandatory after disp
- Misplacing end keyword
v = [3, 6, 9, 12], which MATLAB expression returns a logical array indicating elements greater than 5 and less than or equal to 10?Solution
Step 1: Understand vector relational operations
Relational operators applied to vectors return logical arrays element-wise.Step 2: Combine conditions correctly with parentheses and &
Use parentheses around each condition: (v > 5) & (v <= 10) to get elements satisfying both.Step 3: Check other options for syntax errors
v > 5 && v <= 10 uses short-circuit &&, invalid for vectors. v > (5 & v) <= 10 is invalid syntax. (v > 5) | (v <= 10) uses OR instead of AND.Final Answer:
(v > 5) & (v <= 10) -> Option CQuick Check:
Use parentheses with & for combined conditions [OK]
- Using && instead of & for array operations
- Using | instead of & for AND
- Writing invalid combined expressions
Ready to prove it?
Pass the test and this pattern moves unknown
