Why discrete-time matters for digital control in Simulink - Performance Analysis
When working with digital control systems, we use discrete-time signals instead of continuous ones.
We want to understand how the time it takes to run a digital control model changes as we increase the number of time steps.
Analyze the time complexity of the following Simulink model snippet.
% Discrete-time digital controller update loop
for k = 2 : N
u(k) = Kp * e(k) + Ki * sum(e(1:k)) + Kd * (e(k) - e(k-1));
y(k) = plantModel(u(k));
end
This code updates the control signal and system output at each discrete time step.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop runs from 2 to N, updating control and output.
- How many times: It runs exactly N-1 times, once per time step.
- Inside the loop: The sum of errors from 1 to k is calculated each time, which grows with k.
Each time step, the sum of all previous errors is recalculated, so work grows as more steps happen.
| Input Size (N) | Approx. Operations |
|---|---|
| 10 | ~55 (sum of 1 to 10) |
| 100 | ~5050 (sum of 1 to 100) |
| 1000 | ~500500 (sum of 1 to 1000) |
Pattern observation: The total work grows roughly with the square of the number of time steps.
Time Complexity: O(N^2)
This means if you double the number of time steps, the work roughly quadruples.
[X] Wrong: "The loop runs N times, so the time is just O(N)."
[OK] Correct: Inside the loop, summing errors from 1 to k takes more work each step, adding up to much more than just N.
Understanding how discrete-time steps affect computation helps you design efficient digital controllers and explain your reasoning clearly.
"What if we stored the running sum of errors instead of summing each time? How would the time complexity change?"
Practice
Solution
Step 1: Understand digital controller operation
Digital controllers work by updating signals at fixed intervals, not continuously.Step 2: Connect discrete-time to Simulink modeling
Simulink models this by using discrete blocks with sample times to represent these fixed updates.Final Answer:
Because digital controllers update signals at fixed time intervals -> Option DQuick Check:
Digital control = discrete updates [OK]
- Thinking digital control is continuous
- Confusing sampling with elimination
- Assuming infinite precision in digital signals
Solution
Step 1: Identify how discrete sample time is set
Discrete blocks require a positive fixed sample time to update at intervals.Step 2: Evaluate options
Setting sample time to 0 means continuous, -1 means inherited, infinity is invalid.Final Answer:
Sample time set to a positive fixed value -> Option BQuick Check:
Discrete sample time = positive value [OK]
- Using 0 which means continuous time
- Using -1 which inherits sample time
- Setting sample time to infinity
y[k] = 0.5 * y[k-1] + u[k]
and input sequence u = [2, 4, 6], with initial y[0] = 0, what is y[3]?
Solution
Step 1: Calculate y[1], y[2], y[3] step-by-step
y[1] = 0.5* y[0] + u[1] = 0.5*0 + 2 = 2
y[2] = 0.5* y[1] + u[2] = 0.5*2 + 4 = 1 + 4 = 5
y[3] = 0.5* y[2] + u[3] = 0.5*5 + 6 = 2.5 + 6 = 8.5Step 2: Verify calculations
Check each step carefully to avoid off-by-one errors in indexing.Final Answer:
8.5 -> Option AQuick Check:
Discrete update sums to 8.5 [OK]
- Mixing up indices k and k-1
- Forgetting initial condition y[0]
- Adding instead of multiplying coefficients
Sample time = 0
Initial condition = 5
What is wrong?
Solution
Step 1: Understand sample time meaning
Sample time 0 means continuous time, not discrete updates.Step 2: Check initial condition validity
Initial condition 5 is valid; no issue there.Final Answer:
Sample time 0 means continuous, not discrete -> Option CQuick Check:
Discrete sample time ≠ 0 [OK]
- Thinking initial condition causes error
- Believing sample time can be zero for discrete
- Ignoring sample time meaning
Solution
Step 1: Identify correct sample time setting
Discrete block with sample time 0.1 means updates every 0.1 seconds.Step 2: Understand output holding
Zero-Order Hold block keeps output constant between samples, matching requirement.Final Answer:
Use a discrete block with sample time 0.1 and a Zero-Order Hold block -> Option AQuick Check:
Discrete sample + hold = correct model [OK]
- Using continuous block for discrete sampling
- Omitting Zero-Order Hold block
- Using inherited sample time (-1) incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
