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.