What is in practice an anticausal filter?

1.3k Views Asked by At

Could someone enlighten me about anticausal filters? Actually, I'm trying to understand why the function $\dfrac{1}{1-az}$ is the transfer function of a first order anticausal filter.

I think I understood why $\dfrac{1}{1-az^{-1}}$ is the transfer function of a first order causal filter : a first order causal filter is given by $$ y(n) = x(n) + ay(n-1) $$ and hence we can compute the output recursively and we obtain the impulse response $a^nu(n)$. Then the z-transform of this function is indeed $\dfrac{1}{1-az^{-1}}$.

But now for the anticausal filter I'm having doubts. A first order anticausal filter is given by $y(n) = x(n) + ay(n+1)$, right? Then how can I compute the outputs? Am I supposed to have an initial condition for some indice K and then applying the recursion in the decreasing way? Could someone give an example? I feel lost because it's the reverse case of the causal filter. And how can I get to the transfer function $\dfrac{1}{1-az}$?

Thanks a lot!

Marie

1

There are 1 best solutions below

2
On BEST ANSWER

By definition,

A causal filter is a filter whose output depends only on past and present inputs.

The filter described by the difference equation $$ \tag{1} y[n] = x[n] + ay[n+1], $$ is not causal. Indeed, by repeated use of $(1)$, one can write

$$ \begin{align} y[n] &=x[n]+a(x[n+1]+ay[n+2])\\ &=x[n]+ax[n+1]+a^2y[n+2]\\ &=x[n]+ax[n+1]+a^2(x[n+2]+ay[n+3])\\ &=\cdots\\ \tag{2} &=\sum_{l=0}^{\infty}a^lx[n+l], \end{align} $$ i.e., the output at time $n$ depends on current and future input values. Equivalently, one can show that the impulse response of the system is

$$ h[n]=a^{-n}u[-n] $$

which has non-zero elements for $n<0$, whereas a causal impulse response has non-zero elements only for $n\geq0$.

Now, it may appear that a non-causal filter is only a mathematical concept with no practical implementation as "one needs to know the future". In practice, a non-causal filter is implemented by introducing a sufficiently large delay. In particular, the system buffers the signal values $x[n],x[n+1],x[n+2],\cdots, x[n+D]$ where $D>0$ is the delay and computes the output $y[n]$ as $y[n]=\sum_{l=0}^{D}a^lx[n+l]$.

Note that with this approach:

  1. The output $y[n]$ is computed when the signal $x[n+D]$ is available, i.e., the output is generated with a delay of $D$ samples.
  2. From $(2)$, the output at a certain instant depends on all future input samples. For practical reasons, we have to consider only a finite number (equal to $D$) of future input samples. Therefore the value of $D$ not only affects the delay of the output but also the computation accuracy (larger $D$ will provide a more accurate approximation of the output, however, with a cost of increased delay).