DSPRelated.com
Forums

Linear convolution using oversampled filterbank

Started by KimT 3 months ago2 replieslatest reply 2 months ago184 views

I 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

[ - ]
Reply by vatarebAugust 14, 2024

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!

[ - ]
Reply by KimTAugust 16, 2024

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