Reply by GLIT...@GMX.DE June 17, 20082008-06-17
Hello,
I am kind of new to DSP, however part of my bachelor's thesis is about crosstalk cancellation as it pertains to binaural audio.
The problem I'm having is with designing filters. Part of my assignment is to approximate the inverse of a filter. This filter is 40000 samples long, since it is a combination of several room impulse responses sampled at 44khz.

My question is this: How do you deal with so long responses? Is there some trick to shorten impulse responses or filters?

Any kind of filter design function takes forever when working with a filter that long. I've already checked out the Levinson Durbin algorithm and that too takes forever. Ideally the filter should be calculated in ~3 seconds. The fir2 function almost does this, however I don't get good inverses through that.

Here's the code I tried to get the inverse

imp1 = somefilter;
[h w] = freqz(1,imp1,(length(imp1)));
invfilt = (fir2(1000000,0:1/(length(h)-1):1,h'));
Even with a million taps that inverse barely cuts it.