Causality check for discrete-time systems: Which of the following systems is causal?
-
Ay[n] = 3 x[n] − 2 x[n − 1]
-
By[n] = 3 x[n] + 2 x[n + 1]
-
Cy[n] = 3 x[n + 1] + 2 x[n − 1]
-
Dy[n] = 3 x[n + 1] + 2 x[n − 1] + x[n]
-
Ey[n] = x[n + 2]
Answer
Correct Answer: y[n] = 3 x[n] − 2 x[n − 1]
Explanation
Introduction / Context:Causality is a foundational property for real-time systems: the output at time n cannot depend on future input samples. Knowing how to spot future dependencies is vital for implementability.
Given Data / Assumptions:
- Five candidate input–output relations.
- Standard discrete-time indexing with n for current time, n−k for past, and n+k for future.
- No hidden states beyond what is shown.
Concept / Approach:
A causal system’s output y[n] relies only on x[n] and past values x[n−k], k ≥ 1. Any appearance of x[n+k] with k > 0 violates causality because it requires knowledge of future input.
Step-by-Step Solution:
Option (a): depends on x[n] and x[n−1] → causal.Option (b): includes x[n+1] → noncausal.Option (c): includes x[n+1] → noncausal.Option (d): includes x[n+1] → noncausal.Option (e): pure advance x[n+2] → noncausal.Verification / Alternative check:
Physical realization: (a) can be implemented with one sample of memory (a delay). Others would need prediction of unknown future inputs, which is not causal.
Why Other Options Are Wrong:
- Any x[n+k], k > 0, violates causality by definition.
- Adding current or past terms cannot fix a future dependency.
Common Pitfalls:
- Confusing time advance (future input) with time delay (past input).
- Assuming linearity or time invariance alone guarantees causality—it does not.
Final Answer:
y[n] = 3 x[n] − 2 x[n − 1]