Can some one explain what is the meaning ( in real life) of anti causal (precursor) part of the channel taps?

The channel taps are classified into postcursor (causal) and the precursor (anti-causal) parts.

$$$$y_{k}=\sum_{l=-L_{2}}^{l=L_{1}} h_{l} x_{k-l}+n_{k}$$$$

here $$h_{l}$$ is the $$l^{t h}$$ tap of the channel and $$L_{1}$$ and $$L_{2}$$ are the lengths of the causal and anti-causal part of the channel respectively and $$L=L_{1}+L_{2}+1$$ is the total length of the channel. In addition, $$n_{k}$$ represents an additive Gaussian white noise with zero mean and variance $$\sigma_{n}^{2} .$$ Arranging the equation above into a matrix form we have

\begin{aligned} \mathbf{y}_{k} &=\mathbf{H} \mathbf{x}_{k}+\mathbf{n}_{k} \\ \mathbf{y}_{k} &=\left[y_{k-K_{1}} y_{k-K_{1}+1} \cdots y_{k+K_{2}}\right]^{T} \\ \mathbf{x}_{k} &=\left[x_{k-K_{1}-L_{1}} x_{k-K_{1}-L_{1}+1} \cdots x_{k+K_{2}+L 2}\right]^{T} \\ \mathbf{n}_{k} &=\left[n_{k-K_{1}} n_{k-K_{1}+1} \cdots n_{k+K_{2}}\right]^{T} \\ \mathbf{H} &=\left[\begin{array}{cccccc} h_{L_{1}} & \cdots & h_{-L_{2}} & \cdots & 0 \\ \vdots & \ddots & \ddots & \ddots & \vdots \\ 0 & \cdots & h_{L_{1}} & \cdots & h_{-L_{2}} \end{array}\right] \end{aligned} The anti causal part of the channel span means that at a time $$k$$, the output of the channel depends on previous symbols and future symbols ? how can this be ?

• Just a mathematical model. – Marcus Müller Mar 13 '20 at 14:33

Actual channels are always causal (like everything else in the physical universe).

Actual (discrete-time) channels also sometimes have one tap that is considerably larger than the rest; an example impulse response would be h = [0.1, 1.5, 0.2]. Some authors prefer to define h[0] as the largest tap; in my example, we'd have h[-1] = 0.1, h[0] = 1.5, and h[1] = 0.2. Then, h[-1] would be "anticausal" since it occurs before the impulse is applied at n = 0.

As Marcus says, this is just a model. It has zero effects on the receiver, except on how you write the indices in your algorithms.

Personally, I never worry about this and always define the first tap as h[0] (or rather h[1], if implementing it in Matlab or Julia).

It is common in DSP practice to define some convenient center for a filter as being at time 0, even though we cannot build non-causal systems in practice. You see this most when you're designing a symmetrical filter, and you define t = 0 as the filter center, but it happens elsewhere.

You do this because it makes the analysis easier, and you justify it by stating that in practice you'll just add enough delay to the system so that the actual, physical system is, in fact, causal.

• Good point about justifying this by adding delay -- I forgot to mention it in my answer. – MBaz Mar 13 '20 at 20:37