Running simulations in MATLAB - Time & Space Complexity
When running simulations, it is important to know how the time needed grows as we increase the number of simulation steps.
We want to find out how the total work changes when we run more simulations.
Analyze the time complexity of the following code snippet.
numSteps = 1000;
results = zeros(1, numSteps);
for i = 1:numSteps
results(i) = rand() + rand();
end
This code runs a simulation that repeats a random calculation many times and stores the results.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that runs the random calculation and stores the result.
- How many times: It runs exactly numSteps times, once for each simulation step.
As the number of simulation steps increases, the total work grows in a straight line.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 20 random calculations |
| 100 | About 200 random calculations |
| 1000 | About 2000 random calculations |
Pattern observation: Doubling the number of steps roughly doubles the total work.
Time Complexity: O(n)
This means the time needed grows directly in proportion to the number of simulation steps.
[X] Wrong: "Running more simulations only adds a tiny bit of extra time, so it's almost constant."
[OK] Correct: Each simulation step does work, so more steps add more time in a direct way, not a tiny or fixed amount.
Understanding how simulation time grows helps you explain performance clearly and shows you can think about how code scales in real projects.
"What if we nested another loop inside to run multiple simulations per step? How would the time complexity change?"
Practice
for loop in running simulations in MATLAB?Solution
Step 1: Understand the role of
Aforloopsforloop repeats commands a fixed number of times, which is essential for running simulations step-by-step.Step 2: Match the purpose to simulation needs
Simulations require repeating calculations or processes many times to model changes over time, whichforloops handle well.Final Answer:
To repeat a set of commands multiple times automatically -> Option AQuick Check:
Loop repeats commands = repeat steps [OK]
- Confusing loops with data storage
- Thinking loops create GUIs
- Mixing loops with function definitions
Solution
Step 1: Recall MATLAB
MATLAB usesforloop syntaxfor variable = start:endto run loops a fixed number of times.Step 2: Compare options with correct syntax
for i = 1:10 % simulation code end matches MATLAB syntax exactly; others use incorrect keywords or structures.Final Answer:
for i = 1:10 % simulation code end -> Option BQuick Check:
MATLAB loops use 'for i = start:end' [OK]
- Using non-MATLAB keywords like 'loop' or 'repeat'
- Confusing
whilewithforloops - Missing the
endkeyword
for t = 1:3 disp(t^2) end
Solution
Step 1: Understand the loop iterations
The loop runs with t = 1, 2, 3.Step 2: Calculate the displayed values
Each iteration displays t squared: 1^2=1, 2^2=4, 3^2=9.Final Answer:
1 4 9 -> Option AQuick Check:
Squares of 1,2,3 = 1 4 9 [OK]
- Printing t instead of t squared
- Confusing output with sums
- Expecting syntax errors
for i = 1:5 result = i * 2 end disp(result)
Solution
Step 1: Check variable initialization
In MATLAB, variables can be created inside loops without prior definition.Step 2: Understand loop and output behavior
The loop runs 5 times, updating 'result' each time; after loop, 'result' holds last value (5*2=10), which is displayed.Final Answer:
No error; code runs and displays the last result -> Option CQuick Check:
Loop updates variable; last value shown [OK]
- Thinking semicolons are mandatory to avoid errors
- Assuming variables must be pre-declared
- Confusing loop variable initialization
pop?Solution
Step 1: Understand the simulation requirements
Start at 100, increase by 10% each step, store all 5 values in an array.Step 2: Analyze each option for correctness
pop = zeros(1,5); pop(1) = 100; for i = 2:5 pop(i) = pop(i-1) * 1.1; end initializes array, sets first value, then correctly updates subsequent values using previous step's value. pop = 100; for i = 1:5 pop = pop * 1.1; end overwrites single value, no array. pop = []; for i = 1:5 pop(i) = 100 * 1.1^i; end calculates powers but starts from step 1, missing initial 100 at index 1. pop = zeros(5,1); pop(1) = 100; for i = 1:5 pop(i+1) = pop(i) * 1.1; end tries to access index 6 in 5-element array, causing error.Final Answer:
pop = zeros(1,5); pop(1) = 100; for i = 2:5 pop(i) = pop(i-1) * 1.1; end -> Option DQuick Check:
Initialize array, set first value, update from previous [OK]
- Not storing all values in an array
- Indexing beyond array size
- Overwriting single variable instead of array
Ready to prove it?
Pass the test and this pattern moves unknown
