In the audio domain, I am currently attempting to use MATLAB to distil:

  1. $\textrm{signal}$ from $\textrm{noise + signal}$

  2. $\textrm{noise}$ from $\textrm{noise + signal}$ using two adaptive filters $\rightarrow$ two results.

I get the first answer quite effectively using:

hFDAF1 = adaptfilt.fdaf(AdaptFiltLength,StepSize,Leakage,Delta,Lambda)

[Errors1, Adapt_Out_Audio] = filter(hFDAF1, NoisePlusAudio, Audio)

where NoisePlusAudio is a microphone in the room, and Audio is music playing through speakers in the room.

How do I get the adaptive filter to remove the Audio from NoisePlusAudio, just leaving the background noise of the room, much like an echo canceller? The following does not work, it just lets all the sound through.

[Errors2, Adapt_Out_Noise] = filter(hFDAF2, Audio, NoisePlusAudio)

I'd love to know the answer ....

  • $\begingroup$ I assume your hFDAF2 is similar settings to hFDAF1? $\endgroup$ Feb 5, 2016 at 9:41
  • $\begingroup$ I use:AdaptFiltLength = 256 StepSize = 0.03 Leakage = 0.9 Delta = 1 Lambda = 0.96 $\endgroup$
    – Croc
    Feb 6, 2016 at 6:33
  • $\begingroup$ Would you support this: area51.stackexchange.com/proposals/94189/matlab Just up vote question with less than 10 votes. $\endgroup$
    – Royi
    Jan 2, 2017 at 12:10

1 Answer 1


Reason for it might be the continuous adaptation, even in non speech regions. So, you can try Voice Activity Detector (VAD) for knowing the exact regions for adaptation of filter, and processing will be frame wise (20 ms).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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