Comparison

Causal vs Non-Causal System

A microphone feeding audio into a Bluetooth speaker must process sound without knowing future samples — that is causality enforced by physics. An offline audio editor like Audacity, however, can apply a zero-phase filter that looks at samples ahead because the entire recording is already in memory. Causality is not a mathematical convenience; it is the line between a real-time system and an offline one.

EEE, ECE, EI

Side-by-side comparison

ParameterCausalNon-Causal System
Dependence on future inputNo — output y(n) depends only on x(n), x(n−1), …Yes — output y(n) depends on x(n+1), x(n+2), … etc.
Physical realisabilityRealisable in real timeNot realisable in real time; requires stored data
Impulse responseh(n) = 0 for n < 0h(n) ≠ 0 for some n < 0
ROC of H(s) or H(z)Right-half s-plane or outside a circle in z-planeLeft-half s-plane or inside a circle in z-plane
Filter typeIIR filters (Butterworth, Chebyshev) in real-time DSPZero-phase FIR used in offline ECG post-processing
Group delayNon-zero; introduces phase distortionZero phase possible (linear phase FIR with future taps)
Example hardwareSTM32 running a real-time IIR filter at 1 kHz loop rateMATLAB filtfilt() function used on recorded EEG data
Step responseResponse starts at t = 0 for unit step applied at t = 0Response can start before t = 0 (anticipatory)
Stability conditionBIBO stable if poles inside unit circle (discrete)Stability defined differently; ROC must include unit circle
Typical exam scenarioCheck if h[n] = 0 for n < 0h[n] = (0.5)^|n| is non-causal as it is non-zero for n < 0

Key differences

The key test for causality is whether h[n] = 0 for all n < 0. The sequence h[n] = (0.5)^|n| fails this because it is non-zero for negative n. In the Laplace domain, a causal system's ROC is a right-half plane (Re{s} > σ0), while a non-causal system's ROC may be a left-half plane. Real-time DSP on an STM32 is always causal; the filtfilt() function in MATLAB uses the entire data record to achieve zero-phase, making it non-causal. GATE consistently tests the impulse response condition.

When to use Causal

Use a causal system whenever the application runs in real time — for example, a digital hearing aid that must process speech with a latency under 5 ms cannot look at future samples.

When to use Non-Causal System

Use a non-causal approach when data is available in full before processing — for example, applying a zero-phase Butterworth filter with MATLAB's filtfilt() to a 30-second ECG recording to remove baseline wander without distorting P-wave timing.

Recommendation

For both exams and placements, choose causal for any real-time or hardware-embedded context. Non-causal appears in offline signal processing questions. In GATE, if the ROC or impulse response is given, check causality before anything else — it unlocks the stability analysis.

Exam tip: Examiners ask you to determine causality from h[n]: state the rule h[n] = 0 for n < 0, then verify it with the given sequence — do not just say "it depends on time"; show the check explicitly.

Interview tip: An interviewer at a DSP company will ask the difference between filter() and filtfilt() in MATLAB — explain that filter() is causal (real-time usable) while filtfilt() is non-causal (zero-phase, offline only).

More Signals Systems comparisons