Linear convolution using oversampled filterbank
Started by 3 months ago●2 replies●latest reply 2 months ago●184 viewsI am trying to understand how to obtain linear convolution when using a filterbank (FB) with frequency decimation. According to https://en.wikipedia.org/wiki/Discrete-time_Fourie... such a FB goes by various names, which has caused me some confusion when looking for literature. The specific implementation I am trying out is based on:
https://github.com/andreas12345/cdr-dereverb/blob/...
It is a polyphase FB sometimes referred to as a WOLA FB or a complex valued oversampled FB.
I have got the impression that the FB should be good for frequency domain adaptive filtering, as it reduces spectral leakage and is efficient. I tried to design an example showing how linear filtering can be performed in the frequency domain using this FB but cannot make it work. For comparison, I have made an OLA example that works fine because it uses a FFT size of filter length + block length - 1.
Please compare these Matlab scripts (sorry, i tried to "Insert file" when composing message but it did not work):
https://cloud.onlime.dk/s/089cbd75238b8f64fb08dd37...
https://cloud.onlime.dk/s/0895bf72866f5bb441986202...
How can linear convolution be obtained when using the WOLA FB?
Also, I do not understand why the time folded input data (line 104 in wola_linear_convolution_test.m) needs to be reversed.
Kim
Hello
Key Points for Obtaining Linear Convolution Using WOLA Filterbank
WOLA Filterbank Overview:
A WOLA filterbank splits the signal into subbands for processing and then reconstructs it.
It’s efficient for frequency-domain adaptive filtering due to reduced spectral leakage.
Linear Convolution with WOLA:
Different from traditional Overlap-Add (OLA), WOLA involves polyphase decomposition and subband processing.
To achieve linear convolution, ensure the FFT size, filter length, and block size are correctly set.
Time-domain aliasing should be avoided through proper overlap handling.
Handling Challenges:
Reversing time-folded input data (line 104 in your script) helps align polyphase components correctly.
Double-check windowing functions, overlap settings, and start with simpler filters to verify the implementation.
Troubleshooting Tips:
Compare results with a simple OLA example.
Ensure correct FFT size relative to your filter length and block size.
Literature and Further Study:
Look for terms like "polyphase filterbanks" or "oversampled filterbanks" to find relevant literature.
Review DSP resources for additional implementation insights.
Hope it helps!
Hello and thank you for your suggestions and comments.
Regarding line 104, I will take another look at the theory and why it is needed to align polyphase components correctly.
The second link I posted actually points to a simple OLA example (ola_linear_convolution_test.m) and shows that linear convolution works fine when using OLA.
I am still confused about whether the WOLA example (wola_linear_convolution_test.m) does support linear convolution by frequency domain multiplication or not, as it does not use an FFT that is at least M+N-1 long (block size + filter length -1). Can you find/design a H that will provide an output similar to linear convolution in the time domain?
I do not think there is anything wrong with the FB implementation, I am probably not using it right/ the way it is intended.
Kim