|
In signal processing, a comb filter adds a delayed version of a signal to itself, causing constructive and destructive interference. The frequency response of a comb filter consists of a series of regularly-spaced spikes, giving the appearance of a comb.
Comb filters exists in two different forms, feedforward and feedback; the names refer to the direction in which signals are delayed before they are added to the input.
Comb filters may be implemented in discrete time or continuous time; this article will focus on discrete-time implementations; the properties of the continuous-time comb filter are very similar.
Feedforward form
The general structure of a feedforward comb filter is shown on the right. It may be described by the following difference equation:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ y[n] = x[n] + \alpha x[n-K] \,
where Failed to parse (Missing texvc executable; please see math/README to configure.): K
is the delay length (measured in samples), and Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
is a scaling factor applied to the delayed signal. If we take the Z transform of both sides of the equation, we obtain:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ Y(z) = (1 + \alpha z^{-K}) X(z) \,
We define the transfer function as:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(z) = \frac{Y(z)}{X(z)} = 1 + \alpha z^{-K} = \frac{z^K + \alpha}{z^K} \,
Frequency response
Image:Comb filter response ff pos.png
Feedforward magnitude response for various positive values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
Image:Comb filter response ff neg.png
Feedforward magnitude response for various negative values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
To obtain the frequency response of a discrete-time system expressed in the Z domain, we make the substitution Failed to parse (Missing texvc executable; please see math/README to configure.): z = e^{j \omega} . Therefore, for our feedforward comb filter, we get:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(e^{j \omega}) = 1 + \alpha e^{-j \omega K} \,
Using Euler's formula, we find that the frequency response is also given by
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(e^{j \omega}) = \left[1 + \alpha \cos(\omega K)\right] - j \alpha \sin(\omega K) \,
Often of interest is the magnitude response, which ignores phase. This is defined as:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ | H(e^{j \omega}) | = \sqrt{\Re\{H(e^{j \omega})\}^2 + \Im\{H(e^{j \omega})\}^2} \,
In the case of the feedforward comb filter, this is:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ | H(e^{j \omega}) | = \sqrt{(1 + \alpha^2) + 2 \alpha \cos(\omega K)} \,
Notice that the Failed to parse (Missing texvc executable; please see math/README to configure.): (1 + \alpha^2)
term is constant, whereas the Failed to parse (Missing texvc executable; please see math/README to configure.): 2 \alpha \cos(\omega K)
term varies periodically. Hence the magnitude response of the comb filter is periodic.
The graphs to the right show the magnitude response for various values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha , demonstrating this periodicity. Some important properties:
- The response periodically drops to a local minimum (sometimes known as a notch), and periodically rises to a local maximum (sometimes known as a peak).
- The levels of the maxima and minima are always equidistant from 1.
- When Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha = \pm 1
, the minima have zero amplitude. In this case, the minima are sometimes known as nulls.
- The maxima for positive values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
coincide with the minima for negative values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
, and vice versa.
Pole-zero interpretation
Looking again at the Z-domain transfer function of the feedforward comb filter:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(z) = \frac{z^K + \alpha}{z^K} \,
we see that the numerator is equal to zero whenever Failed to parse (Missing texvc executable; please see math/README to configure.): z^K = -\alpha . This has Failed to parse (Missing texvc executable; please see math/README to configure.): K
solutions, equally spaced around a circle in the complex plane; these are the zeros of the transfer function. The denominator is zero at Failed to parse (Missing texvc executable; please see math/README to configure.): z^K = 0
, giving Failed to parse (Missing texvc executable; please see math/README to configure.): K
poles at Failed to parse (Missing texvc executable; please see math/README to configure.): z = 0
. This leads to a pole-zero plot like the ones shown below.
Image:Comb filter pz ff pos.png
Pole-zero plot of feedfoward comb filter with Failed to parse (Missing texvc executable; please see math/README to configure.): K = 8
and Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha = 0.5
|
Image:Comb filter pz ff neg.png
Pole-zero plot of feedfoward comb filter with Failed to parse (Missing texvc executable; please see math/README to configure.): K = 8
and Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha = -0.5
|
Feedback form
Similarly, the general structure of a feedback comb filter is shown on the right. It may be described by the following difference equation:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ y[n] = x[n] + \alpha y[n-K] \,
If we rearrange this equation so that all terms in Failed to parse (Missing texvc executable; please see math/README to configure.): y
are on the left-hand side, and then take the Z transform, we obtain:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ (1 - \alpha z^{-K}) Y(z) = X(z) \,
The transfer function is therefore:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(z) = \frac{Y(z)}{X(z)} = \frac{1}{1 - \alpha z^{-K}} = \frac{z^K}{z^K - \alpha} \,
Frequency response
Image:Comb filter response fb pos.png
Feedback magnitude response for various positive values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
Image:Comb filter response fb neg.png
Feedback magnitude response for various negative values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
If we make the substitution Failed to parse (Missing texvc executable; please see math/README to configure.): z = e^{j \omega}
into the Z-domain expression for the feedback comb filter, we get:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(e^{j \omega}) = \frac{1}{1 - \alpha e^{-j \omega K}} \,
The magnitude response is as follows:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ | H(e^{j \omega}) | = \frac{1}{\sqrt{(1 + \alpha^2) - 2 \alpha \cos(\omega K)}} \,
Again, the response is periodic, as the graphs to the right demonstrate. The feedback comb filter has some properties in common with the feedforward form:
- The response periodically drops to a local minimum and rises to a local maximum.
- The maxima for positive values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
coincide with the minima for negative values of Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha
, and vice versa.
However, there are also some important differences, due to the fact that the magnitude response has a term in the denominator:
- The levels of the maxima and minima are no longer equidistant from 1.
- The filter is only stable if Failed to parse (Missing texvc executable; please see math/README to configure.): |\alpha|
is strictly less than 1. As can be seen from the graphs, as Failed to parse (Missing texvc executable; please see math/README to configure.): |\alpha|
increases, the amplitude of the maxima rises increasingly rapidly.
Pole-zero interpretation
Looking again at the Z-domain transfer function of the feedback comb filter:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(z) = \frac{z^K}{z^K - \alpha} \,
This time, the numerator is zero at Failed to parse (Missing texvc executable; please see math/README to configure.): z^K = 0 , giving Failed to parse (Missing texvc executable; please see math/README to configure.): K
zeros at Failed to parse (Missing texvc executable; please see math/README to configure.): z = 0
. The denominator is equal to zero whenever Failed to parse (Missing texvc executable; please see math/README to configure.): z^K = \alpha . This has Failed to parse (Missing texvc executable; please see math/README to configure.): K
solutions, equally spaced around a circle in the complex plane; these are the poles of the transfer function. This leads to a pole-zero plot like the ones shown below.
Image:Comb filter pz fb pos.png
Pole-zero plot of feedback comb filter with Failed to parse (Missing texvc executable; please see math/README to configure.): K = 8
and Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha = 0.5
|
Image:Comb filter pz fb neg.png
Pole-zero plot of feedback comb filter with Failed to parse (Missing texvc executable; please see math/README to configure.): K = 8
and Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha = -0.5
|
Continuous-time comb filters
Comb filters may also be implemented in continuous time. The feedforward form may be described by the following equation:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ y(t) = x(t) + \alpha x(t - \tau) \,
and the feedback form by:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ y(t) = x(t) + \alpha y(t - \tau) \,
where Failed to parse (Missing texvc executable; please see math/README to configure.): \tau
is the delay (measured in seconds).
They have the following frequency responses, respectively:
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(\omega) = 1 + \alpha e^{-j \omega \tau} \,
- Failed to parse (Missing texvc executable; please see math/README to configure.): \ H(\omega) = \frac{1}{1 - \alpha e^{-j \omega \tau}} \,
Continuous-time implementations share all the properties of the respective discrete-time implementations.
Applications
Comb filters are used in a variety of signal processing applications. These include:
See also
es:Filtro comb fr:Filtre en peigne it:Filtro comb nl:Kamfilter pt:Filtro Comb ru:Гребенчатый фильтр sv:Kamfilter
|