# Why don't we just zero out FFT bins?

Started by April 9, 2009
```On Apr 9, 6:22&#2013266080;am, "bmh161" <bmh...@yahoo.com> wrote:
> This is probably a stupid question but, well, I'm not all that smart...
>
> Instead of going through all the trouble of designing complicated digital
> filters, why don't we just pick the frequencies that we want to supress and
> replace those bins in the FFT with zeros?

Because any real frequency in which you are likely to be interested
in suppressing is very probably not represented by any bin in your
FFT.

imho. ymmv.
http://www.nicholson.com/fftmisconceptions.html
```
```bmh161 wrote:
>> This is probably a stupid question but, well, I'm not all that smart...
>>
>> Instead of going through all the trouble of designing complicated
> digital
>> filters, why don't we just pick the frequencies that we want to supress
> and
>> replace those bins in the FFT with zeros?
>>
>>
>>
>
> Then, with the undesirable frequencies zeroed out, take the inverse FFT to
> get back to the time domain.

Something like this is done in 'overlap-save' and
'overlap-add' FFT / IFFT filters, but a little more care
need so be taken in specifying the frequency response.

A requirement of these techniques is that the impulse
response of the filter must be shorter than the number of
bins in the FFT. (N/2 samples long for example.)

If you simply zero-out particular frequency bins in the FFT
you are effectively specifying a filter that has a very
steep response in the frequency domain. This filter will
have an impulse response that is certain to be too long. In
this situation, severe noise and distortion will be
introduced into the filter output.

You need to ensure that the frequency response that you are
specifying implies a filter with an acceptably short impulse
response.  Unfortunately, to do this you must do a FIR
filter design even though you end up using the number of
coefficients in the filter, but not the coefficients themselves.

Regards,
John
```
```"bmh161" <bmh161@yahoo.com> a &#2013265929;crit dans le message de
news: -9CdnboVQ4Mya0DUnZ2dnUVZ_vednZ2d@giganews.com...
> This is probably a stupid question but, well, I'm not all that smart...
>
> Instead of going through all the trouble of designing complicated digital
> filters, why don't we just pick the frequencies that we want to supress
> and
> replace those bins in the FFT with zeros?
>

Doing what you propose (FFT of the signal, multiplying with a frequency
mask, IFFT) gives EXACTLY the same result mathematically speaking than a FIR
filter, its just another way to calculate it. In a nutshell :

output = IFFT (FFT(input) x MASK) = convol (IFFT(FFT(input) x IFFT(MASK)) =
convol (input x IMPULSEREPONSE) = FIR(input, IMPULSERESPONSE)...

However, as explained by the other posts, if the frequency mask is just
the frequency FFT bins, that's why windowing techniques are welcome. You can
read an article I've published in 2007 in Circuit Cellar for more
explanations on links between FFT and FIR (#207, october 2007, p. 70, "The
Darker Side : No Fear with FIR").

Friendly,
Robert Lacoste
www.alciom.com

```
```On 10 Apr, 02:17, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:
> On Thu, 09 Apr 2009 08:22:55 -0500, "bmh161" <bmh...@yahoo.com> wrote:

> >Instead of going through all the trouble of designing complicated digital
> >filters, why don't we just pick the frequencies that we want to supress and
> >replace those bins in the FFT with zeros?
...
> &#2013266080;I just wanted to say that
> your question is sensible and that we, the DSP guys here,
> should investigate the process of freq-domain filtering
> in detail

Rick, did we read the same post? The question is not why
frequency domain filtering is a bad idea, but why one doesn't
use the naive, 'obvious' specs for the filters. I commented on
a similar question not too long ago:

Such questions are covered in most DSP texts - I wouldn't be
surprised if you touched on the subject already.  If not, the issue
might be worth half a page's comments in your 3rd edition, as
your book is the first entry point into DSP for lots of users.

Teachning students how to think 'right' is an admirable (and
difficult!) task; warning against how to think 'wrong' can only
help the effort.

Rune
```
```On Apr 9, 9:22&#2013266080;am, "bmh161" <bmh...@yahoo.com> wrote:
> This is probably a stupid question but, well, I'm not all that smart...
>
> Instead of going through all the trouble of designing complicated digital
> filters, why don't we just pick the frequencies that we want to supress and
> replace those bins in the FFT with zeros?

A subtle point here (which is implicit in alot of the criticism
mentioned above), is that the frequency resolution and center
frequencies of your method is changes with your FFT size. Consider for
example, the case of designing a notch filter. Lets say you want to
cancel a 60 Hz sinuisoid component. Then for different FFT sizes you
will be cancelling the following frequency bands as well (assuming Fs
=44100):

N= 128  ->  0<= f <  344 Hz    frequencies set to 0

N= 256   ->  0<= f < 172 Hz   set to 0

N=1024   ->  43<= f < 86 Hz   set to 0

The alternative is do desing a notch filter whos resolution is
"independent" of the sample size ie,

cW = cos(2*pi*60/44100);
b=[1 -2*cW 1];

This can be important in case you want to make the sample size
variable on some applications (ie, say you are processing speech
signals and the speech segments are of different lengths) but you want
the filter to be fixed.

```
```On 9 Apr., 15:22, "bmh161" <bmh...@yahoo.com> wrote:
> Instead of going through all the trouble of designing complicated digital
> filters, why don't we just pick the frequencies that we want to supress and
> replace those bins in the FFT with zeros?

It's equivalent to circular convolution with a brickwall lowpass
filter (infinite impulse response). The issue is you need to fight the
"wrap-around error". This becomes easy if the filter's impulse
response is finite and known ...

Cheers!
SG
```
```On Apr 11, 3:12&#2013266080;pm, Neu <ikarosi...@hotmail.com> wrote:
> On Apr 9, 9:22&#2013266080;am, "bmh161" <bmh...@yahoo.com> wrote:
>
> > This is probably a stupid question but, well, I'm not all that smart...
>
> > Instead of going through all the trouble of designing complicated digital
> > filters, why don't we just pick the frequencies that we want to supress and
> > replace those bins in the FFT with zeros?
>
> A subtle point here (which is implicit in alot of the criticism
> mentioned above), is that the frequency resolution and center
> frequencies of your method is changes with your FFT size. Consider for
> example, the case of designing a notch filter. Lets say you want to
> cancel a 60 Hz sinuisoid component. Then for different FFT sizes you
> will be cancelling the following frequency bands as well (assuming Fs
> =44100):
>
> N= 128 &#2013266080;-> &#2013266080;0<= f < &#2013266080;344 Hz &#2013266080; &#2013266080;frequencies set to 0
>
> N= 256 &#2013266080; -> &#2013266080;0<= f < 172 Hz &#2013266080; set to 0
>
> N=1024 &#2013266080; -> &#2013266080;43<= f < 86 Hz &#2013266080; set to 0

These bands will not actually be set to 0; one frequency within these
bands will and rest will be attenuated to some extent.

>
> The alternative is do desing a notch filter whos resolution is
> "independent" of the sample size ie,
>
> cW = cos(2*pi*60/44100);
> b=[1 -2*cW 1];

Really horrible filter response; much worse than zeroing one point in
the FFT. Plot the response. You will see.

>
> This can be important in case you want to make the sample size
> variable on some applications (ie, say you are processing speech
> signals and the speech segments are of different lengths) but you want
> the filter to be fixed.

spamfree
```
```Neu <ikarosilva@hotmail.com> wrote:
> On Apr 9, 9:22?am, "bmh161" <bmh...@yahoo.com> wrote:

>> Instead of going through all the trouble of designing complicated digital
>> filters, why don't we just pick the frequencies that we want to supress and
>> replace those bins in the FFT with zeros?

> A subtle point here (which is implicit in alot of the criticism
> mentioned above), is that the frequency resolution and center
> frequencies of your method is changes with your FFT size. Consider for
> example, the case of designing a notch filter. Lets say you want to
> cancel a 60 Hz sinuisoid component. Then for different FFT sizes you
> will be cancelling the following frequency bands as well (assuming Fs
> =44100):

> N=1024   ->  43<= f < 86 Hz   set to 0

At 44100 Hz, 1024 points is about 1/40th of a second, which
doesn't sound very realistic.

Consider a five minute CD track, 5*60*44100, 13230000 points,
maybe zero pad up to the next power of two or more.

Then the bins are much smaller.

-- glen
```
```
c...@claysturner.com wrote:
> On Apr 9, 9:29 am, "bmh161" <bmh...@yahoo.com> wrote:
> > >This is probably a stupid question but, well, I'm not all that smart...
> >
> > >Instead of going through all the trouble of designing complicated
> > digital
> > >filters, why don't we just pick the frequencies that we want to supress
> > and
> > >replace those bins in the FFT with zeros?
> >
> > Then, with the undesirable frequencies zeroed out, take the inverse FFT to
> > get back to the time domain.
>
> Because the resulting frequency response is often quite awful. If you
> design a digital filter, then you have control over its response.
>
> Clay

you have control over an FFT frequency response via windowing,  an FFT
is a digital filter
```
```
bmh161 wrote:
> >This is probably a stupid question but, well, I'm not all that smart...
> >
> >Instead of going through all the trouble of designing complicated
> digital
> >filters, why don't we just pick the frequencies that we want to supress
> and
> >replace those bins in the FFT with zeros?
> >
> >
> >
>
> Then, with the undesirable frequencies zeroed out, take the inverse FFT to
> get back to the time domain.

you certainly can, an N point FFT is just bank of N notch filters,
with frequency response controlled by the window. It's just that, in
most cases, a simple 20 tap FIR or 6 pole IIR filter will do the job
instead of performing a 4096 point FFT/IFFT.
```