Reply by maury February 7, 20122012-02-07
On Feb 7, 8:45=A0am, Mauritz Jameson <mjames2...@gmail.com> wrote:
> I created the MATLAB script below to compare filtering in the time- > domain with filtering in the > frequency domain. Seeing how those two operations are related, if you > are calculating the FFT > of a speaker signal and adjusting the magnitude in each frequency bin > to obtain an estimate > of the echo signal, then it seems like you can't really tell what the > length of the > corresponding time-domain filter is? I'm probably missing something > very obvious here..so can > somebody explain to me how you define the max. tail length of a > frequency-domain based acoustic > echo canceller? > > numberOfTaps =3D 128; > numberOfSamples =3D 64; > b =3D fir1(numberOfTaps,0.9); > x =3D randn(1,numberOfSamples); > filterInput =3D [x zeros(1,numberOfTaps)]; > filterOutput =3D filter(b,1,filterInput); > figure > plot(filterOutput,'ko--') > NFFT =3D numberOfSamples + numberOfTaps; > MAGx =3D abs(fft(filterInput,NFFT)); > PHAx =3D angle(fft(filterInput,NFFT)); > filterTaps =3D [b zeros(1,numberOfSamples)]; > MAGb =3D abs(fft(filterTaps,NFFT)); > PHAb =3D angle(fft(filterTaps,NFFT)); > filterOutput =3D real(ifft(MAGx.*MAGb.*exp(j.*(PHAb+PHAx)),NFFT)); > hold on > plot(filterOutput,'rx--')
Mauritz, The time-domain NMLS adaptive filter and frequency-domain adaptive filter (FDAF) implementations really are not equivalent. The FDAF operates on blocks of data, not on lengths of data. The closest parallel would be the block LMS (BLMS) implementation. What I think is interesting is that Widrow doesn't address the FDAF in his Adaptive Signal Processing book (although he did address it in his early papers), neither does Compton in his Adaptive Antennas book, nor Haykin in his Adaptive Filter Theory book. Clarkson does a good job of analysing the FDAF in his Optimal and Adaptive Signal Processing book. I think you will find most information in journal papers written on the FDAF. You can try [1]. Dentino,et al, "Adaptive Filtering in the Frequency Domain", Proc. IEEE vol 66 [2]. Ferrara, "Frequency Domain Adaptive Filters" in Adaptive Filters, edited by Cowan and Grant [3]. Mansoour, "Unconstrained Frequency Domain Adaptive Filters", IEEE Trans, ASSP, vol ASSP-30 Good luck, Maurice Givens
Reply by Mauritz Jameson February 7, 20122012-02-07
I created the MATLAB script below to compare filtering in the time-
domain with filtering in the
frequency domain. Seeing how those two operations are related, if you
are calculating the FFT
of a speaker signal and adjusting the magnitude in each frequency bin
to obtain an estimate
of the echo signal, then it seems like you can't really tell what the
length of the
corresponding time-domain filter is? I'm probably missing something
very obvious here..so can
somebody explain to me how you define the max. tail length of a
frequency-domain based acoustic
echo canceller?







numberOfTaps = 128;
numberOfSamples = 64;
b = fir1(numberOfTaps,0.9);
x = randn(1,numberOfSamples);
filterInput = [x zeros(1,numberOfTaps)];
filterOutput = filter(b,1,filterInput);
figure
plot(filterOutput,'ko--')
NFFT = numberOfSamples + numberOfTaps;
MAGx = abs(fft(filterInput,NFFT));
PHAx = angle(fft(filterInput,NFFT));
filterTaps = [b zeros(1,numberOfSamples)];
MAGb = abs(fft(filterTaps,NFFT));
PHAb = angle(fft(filterTaps,NFFT));
filterOutput = real(ifft(MAGx.*MAGb.*exp(j.*(PHAb+PHAx)),NFFT));
hold on
plot(filterOutput,'rx--')
Reply by HardySpicer February 6, 20122012-02-06
On Feb 7, 10:17=A0am, Mauritz Jameson <mjames2...@gmail.com> wrote:
> For an NLMS time-domain algorithm, the tail length is defined as the > number of taps of the NLMS filter, right? > > How is the tail-length defined if you are doing your NLMS in the > frequency domain by adjusting the amplitudes of a 128-point FFT?
Tail length? Do you mean filter order? You won't know what the order is before hand. You have to suck and see unless you have specific information available eg certain acoustic information about delays etc. Hardy
Reply by Mauritz Jameson February 6, 20122012-02-06
For an NLMS time-domain algorithm, the tail length is defined as the
number of taps of the NLMS filter, right?

How is the tail-length defined if you are doing your NLMS in the
frequency domain by adjusting the amplitudes of a 128-point FFT?