DSPRelated.com
Forums

Time varying FFT filtering

Started by Shafik December 20, 2004
Hello folks,

I know this topic has been discussed many times here, but I cannot
seem to get a clear picture of what method should be used when doing a
time varying filter using an FFT.

I have to use an FFT since I have to do signal analysis as well. Some
discussions say that using the overlap-save method with a rectangular
window is best, while others say that's the worst for a time varying
filter, suggesting overlap-add instead.

Is there an actual "preferred" method or does it completely depend on
the application?

Thanks,
--Shafik

I asked about the same question a few days back, so if someone can 
explain this well, or point to some place with good explanation on 
time-varying filters, please do !

Shafik wrote:
> Hello folks, > > I know this topic has been discussed many times here, but I cannot > seem to get a clear picture of what method should be used when doing a > time varying filter using an FFT. > > I have to use an FFT since I have to do signal analysis as well. Some > discussions say that using the overlap-save method with a rectangular > window is best, while others say that's the worst for a time varying > filter, suggesting overlap-add instead. > > Is there an actual "preferred" method or does it completely depend on > the application? > > Thanks, > --Shafik >
"Emile" <bla.abla@telenet.be> wrote in message 
news:grHxd.5744$kC2.435393@phobos.telenet-ops.be...
>I asked about the same question a few days back, so if someone can explain >this well, or point to some place with good explanation on time-varying >filters, please do ! > > Shafik wrote: >> Hello folks, >> >> I know this topic has been discussed many times here, but I cannot >> seem to get a clear picture of what method should be used when doing a >> time varying filter using an FFT. >> >> I have to use an FFT since I have to do signal analysis as well. Some >> discussions say that using the overlap-save method with a rectangular >> window is best, while others say that's the worst for a time varying >> filter, suggesting overlap-add instead. >> >> Is there an actual "preferred" method or does it completely depend on >> the application?
We should start with the fundamentals: 1) An FFT requires that you grab a chunk of temporal data in order to compute the FFT, right? 2) If you are going to do filtering by multiplication in the frequency domain and if the filter you're using is time-varying then: - the time chunk of data that you FFT better be short relative to the time it takes the filter to change very much or - the filter variation better be slow compared to the chunk of time data that the FFT uses. This should make inherent sense to you. Compare this to what happens if you convolve in time and the filter coefficients vary. 3) Note that the (FIR) filter has an impulse response. The data that comes out of the filter prior to the time equivalent to the length of the filter is transient data and not "filtered" as you might expect. Corollary: if the filter changes one coefficient by a large amount in the space of one time sample then there will be a transient at the output of the filter (unless the input is zero) that lasts for a time that is equivalent to the position of the coefficient in the filter. (So, if the filter is full of data and the first coefficient is changed, then it only takes one sample time for the transient to be done. But, if the last coefficient is change, then it takes the full length of the filter for the transient to be done). Corollary: if the filter changes by small amounts (which is equivalent to "slowly") then the transients will be small and not as noticeable. In fact, big changes to the filter - even if widely spaced in time - are equivalent to "fast" changes. So, slow changes imply that the changes in filter coefficients happen gradually. One may decide to lowpass filter the inputs to the coefficients to achieve this. 4) Consider what happens if you aren't convolving in time but, rather, are multiplying in frequency. Then the temporal constraints above become more limiting because you have to take chunks (epochs) of data - not one sample at a time.... Now a "slow" changing filter is relative to the length of the chunk and not the length of the filter. 5) Consider the temporal length of the data that you will input to the filter. If it's long, then the filter has to change even more slowly. So this becomes a system trade: FFT length vs. rate of change of the filter coefficients. Fred
Fred Marshall wrote:
 > <snip>
 >
>>Shafik wrote: >> >>>Hello folks, >>> >>>I know this topic has been discussed many times here, but I cannot >>>seem to get a clear picture of what method should be used when doing a >>>time varying filter using an FFT. >>>
>>><snip>
> > > We should start with the fundamentals: > > 1) An FFT requires that you grab a chunk of temporal data in order to > compute the FFT, right? > > 2) If you are going to do filtering by multiplication in the frequency > domain and if the filter you're using is time-varying then: > - the time chunk of data that you FFT better be short relative to the time > it takes the filter to change very much > or > - the filter variation better be slow compared to the chunk of time data > that the FFT uses. > This should make inherent sense to you. > Compare this to what happens if you convolve in time and the filter > coefficients vary. > > 3) Note that the (FIR) filter has an impulse response. The data that comes > out of the filter prior to the time equivalent to the length of the filter > is transient data and not "filtered" as you might expect. > > Corollary: if the filter changes one coefficient by a large amount in the > space of one time sample then there will be a transient at the output of the > filter (unless the input is zero) that lasts for a time that is equivalent > to the position of the coefficient in the filter. (So, if the filter is > full of data and the first coefficient is changed, then it only takes one > sample time for the transient to be done. But, if the last coefficient is > change, then it takes the full length of the filter for the transient to be > done). > > Corollary: if the filter changes by small amounts (which is equivalent to > "slowly") then the transients will be small and not as noticeable. In fact, > big changes to the filter - even if widely spaced in time - are equivalent > to "fast" changes. So, slow changes imply that the changes in filter > coefficients happen gradually. One may decide to lowpass filter the inputs > to the coefficients to achieve this. > > 4) Consider what happens if you aren't convolving in time but, rather, are > multiplying in frequency. Then the temporal constraints above become more > limiting because you have to take chunks (epochs) of data - not one sample > at a time.... Now a "slow" changing filter is relative to the length of the > chunk and not the length of the filter. > > 5) Consider the temporal length of the data that you will input to the > filter. If it's long, then the filter has to change even more slowly. So > this becomes a system trade: FFT length vs. rate of change of the filter > coefficients. > > Fred > >
Thank u for this answer, i dont fully understand everything u explained (yet), i will go study a little more before i'll ask my "not so smart" questions. In the mean time i found some interesting reading about this topic: Time-Varying Filter In Non-Uniform Block Convolution http://www.csis.ul.ie/dafx01/proceedings/papers/m%FCller-tomfelde_a.pdf