# Definition of causality of a system in Discrete Time Signal Processing [Alan V. Oppenheim]

The book states:

Causality implies that, if x1[n] = x2[n] for n <= n0, then y1[n] = y2[n] for n <= n0.

But isn't it always the case, that for same inputs we're getting same outputs except for the case of time-variance, which this sentence is not about?

Consider, for example, a moving average window. At any time $$n$$ the output $$y[n]$$ will equal the average $$\frac{x[n-1]+x[n]+x[n+1]}{3}$$. Now let us choose:

$$x_1[n]=\begin{bmatrix}1 \\ 1 \\ 2 \end{bmatrix}, x_2[n]=\begin{bmatrix}1 \\ 1 \\ 3 \end{bmatrix}$$

Hence for $$n_0=2$$ we have:

$$x_1[n]=x_2[n]\forall n\leq n_0$$

$$y_1=\frac{1+1+2}{3}=\frac{4}{3}\neq \frac{5}{3}=\frac{1+1+3}{3}=y_2$$ $$y_1\neq y_2\forall n\leq n_0$$

Basically, as all answered where stated, causality wishes to show independence of the output from any future input. The complicated form of definition comes from continuous-time where a system is causal iff: $$x_1(t)=x_2(t)\forall t< t_0 \Rightarrow y_1(t)=y_2(t)\forall t< t_0$$ An example of a non-causal system here would be a differentiation system as a differential is defined around the area of the point and for any point, $$t_0$$ will require an $$\epsilon$$ to the past and an $$\epsilon$$ to the future. This is why we require a soft inequality with respect to $$t_0$$. Discrete-time does not present such a problem.

In general, most physical systems are causal (they can't see into the future). More to the subject of signal processing, any real-time signal processing method is, roughly, causal. I did heard of systems (radio\TV) that delay the signal for a buffer of a second in order to do some processing and transfer it. I am not sure if this is called real-time, though it will probably be non-causal (otherwise, why delaying??). Any off-line method may also be causal or non-causal.

This is a formal way of saying that the output of the system at any time $$n_0$$ only depends on past (and present) samples. The fact that $$x_1$$ and $$x_2$$ can differ in the future (times $$n > n_0$$) doesn't affect the output of the system until, and including, $$n_0$$.

This definition works regardless of time invariance.

Causality implies that only current and past values of the signal impact the output. Now suppose that the system is not causal (output depends on values of $$n>=n_o$$) and then $$x_1[n]$$ and $$x_2[n]$$ are completely different after $$n>=n_o$$, then clearly y[n] will be different at time $$n=n_o$$ even though both sequences are equal before $$n. Therefore that property holds only for causal systems.