What does it mean by leakage in case of digital filters? My specific question is about the frequency domain adaptive filter function provided in the Matlab DSP toolkit, accessed as adaptfilt.fdaf. It has a parameter called LEAKAGE, but I am not sure what exactly does it represent or how it affects the filter response.
The filter created as h = adaptfilt.fdaf can be used as
[y, e] = filter(h, x, d)
which filters the data in x. Studying the source code of the filter function provided shows how leakage has been used, but the theory on which this filter function is based does not include the leakage component. What does it do and why is it there, if the paper on which this function is based does not have it?


In adaptive filtering, leakage is a stabilization method which may be useful if the covariance matrix is close to singular (i.e. at least one of the eigenvalues is very small), or if there are finite-precision effects in the implementation of the adaptive filter. Leakage changes the update formula such that not only the mean squared error but also the norm of the filter taps is minimized. This prevents unbounded growth of the filter coefficients in cases of numerical ill-conditioning.

For you this simply means that you initially use a leakage factor of 1 (i.e. no leakage) if the FDAF works properly with your input signals. If you encounter coefficient drift (large fluctuation about the optimum solution), you can start by slightly decreasing the leakage factor until the coefficient fluctuation becomes sufficiently small. Note that leakage achieves stabilization at the expense of performance degradation because due to the changed update formula it introduces some bias in the filter taps.

| improve this answer | |
  • $\begingroup$ Thank you for your answer. So if the filter coefficients eventually become too big, it is better to apply some level of leakage? Does this mean it will prevent the coefficients from getting too big, but the final filtering won't be as good? $\endgroup$ – user13267 Jun 4 '13 at 10:35
  • $\begingroup$ Matlab's fdaf has another parameter called step size, which, if made too large, makes the final output have extremely large values at the end of the iteration. I am assuming this is happening because of the filter coefficients becoming too big as the iteration continues. So to prevent this, is it better to find the best value for this step size, or play around with both step size and leakage values? $\endgroup$ – user13267 Jun 4 '13 at 10:37
  • $\begingroup$ I am asking this because the leakage parameter does not appear in the paper on which this filter function is based. It looks like this feature was added by the creators of this function $\endgroup$ – user13267 Jun 4 '13 at 10:38
  • $\begingroup$ Yes, leakage is there to prevent the filter coefficients to become too big. But first you should indeed optimize the step size, because leakage always creates some bias in the filter taps. Leakage is a stabilization method and not part of the basic FDAF algorithm as described in Shynk's paper. It is however used in many practical applications to reduce coefficient drift. $\endgroup$ – Matt L. Jun 4 '13 at 10:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.