<< Chapter < Page | Chapter >> Page > |
Adaptive filters are time-varying filters that use an update algorithm to create a finite impulse response (FIR) filter that outputs the best approximation of desired signal. Adaptive filters take in a desired signal and an input signal and update their parameters using feedback driven by the error signal. The adaptive filter finds the ideal filter coefficients for a filter that gives the least mean square of the error signal. The error signal is defined as the difference of the desired signal and the output signal.
At every iteration (or block of samples) the gradient of the mean square error at that time is found, and is then used to adjust the filter coefficients at the time to converge towards the ideal filter coefficients.
We trained adaptive filters using signals recorded in a low-echo environment using three algorithms to filter out echoes in an echoic room and in the OEDK classroom. Our desired signal is a recording of our signal in a low-echo environment that would give us a signal with minimal echo. This gave us a baseline for the distortion of the signal caused by our equipment.
Having gathered a baseline signal, we recorded our input signals in the echoic room and the OEDK classroom. The basic idea of the adaptive filter method is to take in a desired signal and an input signal and mimic an ideal filter with ideal filter coefficients that would make the output signal virtually echo-free and therefore comparable to the desired signal. We explored three different adaptive filtering algorithms for our project.
The LMS algorithm is a class of adaptive filter used to mimic a desired filter by finding the filter coefficients that relate to producing the least mean squares of the error signal (the difference between the desired and the actual signal). The algorithm begins by assuming small weights (zero in most cases), and at each step, by finding the gradient of the mean square error, $E[{e}^{2}(n)]$ , the weights are updated using this cost function. Each iteration uses three steps:
Computational complexity: $2N$ additions, $2N+1$ multiplications.
The MathWorks adaptfilt.lms documentation can be used in Matlab to create an LMS adaptive filter object.
NLMS allows for a variable step size $\mu (n)$ for each iteration. The first two steps of the algorithm are identical to the first two steps of the regular LMS algorithm.
Computational Complexity: $2N$ additions $3N+1$ multiplications.
The MathWorks adaptfilt.nlms documentation can be used in Matlab to create an NLMS adaptive filter object.
Rather than computing by discrete samples, the BLMS algorithm calculates in blocks of data, reducing computation cost and improving the convergence rate. The BLMS algorithm can be implemented in the frequency domain using the Discrete Fourier Transform or the FFT.
Computational complexity: $\frac{4N}{B}+\left(\frac{N}{B}+3\right)\mathrm{log}(2B)$ , where $B$ is the block length.
The MathWorks adaptfilt.blms documentation can be used in Matlab to create a BLMS adaptive filter object.
maxstep()
function to check that your filter is stable. If not, adjust your step size.filter()
with your filter object, the input signal and the desire signal.wavread()
function to import the sounds.
Notification Switch
Would you like to follow the 'Characterization and application of echo cancellation methods' conversation and receive update notifications?