I'm a newbie in signal processing. I understand that the discrete convolution operation is used for FIR filters: in the convolution formula y[n] = x[n] * h[n] = sum(x[k] x h[n-k])
, the right-hand-side obviously does not have y[n]
. By the definition of this convolution operation, am I correct in assuming that it is not used for IIR filters in general, since IIR filters can reference y[]
on the right-hand-side?
2 Answers
A basic result of signal processing is that any LTI filter (FIR or IIR) can be represented as a convolution of the input with the impulse response:
y[n] = x[n] * h[n]
Now, a FIR filter (or "all zero filter") is a filter which h[n]
has bounded support, i.e. it has a finite (hence the name) number of non-zero coefficients. Hence, the output can be expressed a (finite) linear combination of the inputs, or a finite convolution. By contrast, a IIR has infinite coefficients, hence the ouput is still a convolution (or linear combination) of the input, but with infinite terms. Of course, if one has to implement the convolution numerically one cannot do it explicitly unless one has a finite number of terms.
A simple IIR example is y[n] = y[n-1]/2 + x[n]
(1)
The impulsive response of this IIR filter is a decreasing exponential: h[n]= (1/2)^n (n>0)
, which means that the input-output can be expressed as
y[n] = x[n] + x[n-1]/2 + x[n-2]/4 + x[n-3]/8 + ....
(2)
This can also be obtained by inspection. Now, the first form (1) is recursive, and is the natural way of implementing the filter numerically (not the only one). The second form (2) is non-recursive (but have infinite terms) and shows explicitly the convolution y[n] = x[n] * h[n]
; it's conceptually important, but, of course, it's not a viable way of implementing it.
Although your notation is a bit strange, your statement about IIR filters is correct. IIR filters are implemented using difference equations, not convolution.
You might be interested in this blog post to get you started: http://blog.bjornroche.com/2012/08/basic-audio-eqs.html