From: Susan on
Dear forum,

In the use of FIR filters by windowing, it seems that the window
method of low pass filter design is not good for attenutaing low
frequencies. For example, if the sample rate is chosen as 44100, then
below a frequency of 1000Hz the filter can not attenuate these
frequencies. Is this due to the main lobe width property? Perhaps
someone can recommend a good FIR Filter method whish is good for
attenuating low frequencies as well (20Hz and upwards to 20050 HZ)

Thanks for recommendations,
Susan Tsiang
From: Rune Allnor on

Susan skrev:
> Dear forum,
>
> In the use of FIR filters by windowing, it seems that the window
> method of low pass filter design is not good for attenutaing low
> frequencies.

That's correct. Most of it is due to the definition of a
'low pass filter' as being a filter that does not attenuate
low frequencies.

> For example, if the sample rate is chosen as 44100, then
> below a frequency of 1000Hz the filter can not attenuate these
> frequencies. Is this due to the main lobe width property?

Yes, this is due to the main lobe width. When you design a
filter using the window function, you typically specify the
filter as

- FIR (as opposed to IIR)
- Window type (with control parameter, in the case of a Kaiser
window)
- Low pass (as opposed to high pass, band pass, band stop)
- Cut-off frequences of pass bands and stop bands, relative
to the sampling frequency

A good filter design routine then computes the filter length
and the filter coefficients based on the parameters you supply.

> Perhaps
> someone can recommend a good FIR Filter method whish is good for
> attenuating low frequencies as well (20Hz and upwards to 20050 HZ)

Try to design your filtar as a high pass or bandpass filter.
If you have access to the signal processing toolbox, you could
also try to use the REMEZ function, although it has just changed
name in the most recent version of matlab.

Rune

From: Susan on
Hi Rune,

Thanks for your answers. THis is interesting to know because it seems
like the Window method of Lowpass FIR design is only good for
frequencies down to 1000Hz (at a sampling rate of 44100Hz). If for
example I want my cutoff to be at 20Hz, it is simply not possible
using a window. The windows I have tried only get down to a cutoff of
about 1000Hz (which will probably correspond to the main lobe width,
if I calculate using a given formula). This is not good for 'tunable'
FIR filters which I might want to change the cutoff in real time
between 20Hz and 2000Hz, as the filter appears to 'get stuck' at
1000Hz :-( This phenomena I is also observed with using very high FIR
length (i.e. 501 coefficients)

However, it needs to be FIR as I need linear phase. Maybe the Kaiser
window will be better? But a lot of time spend developing if results
unsatisfactory.

Back to work,
With regards,
Susan Tsiang
From: Rune Allnor on

Susan wrote:
> Hi Rune,
>
> Thanks for your answers. THis is interesting to know because it seems
> like the Window method of Lowpass FIR design is only good for
> frequencies down to 1000Hz (at a sampling rate of 44100Hz). If for
> example I want my cutoff to be at 20Hz, it is simply not possible
> using a window.

One problem to consider is the number of coefficients. The number
of coefficients is usually determined by the width of the transition
band, i.e. the distance between the pass-band cut-off frequency
and the stop-band cut-off frequency. The general rule is that
the main lobe width needs to fit into this transition band.

For a 20 Hz filter bandwidth with a signal sampled at 44.1 kHz,
the relative bandwidth is

BW = 20 /44100 = 4.5e-4

which would require a filter with a few thousand coefficients
to filter out properly.

> The windows I have tried only get down to a cutoff of
> about 1000Hz (which will probably correspond to the main lobe width,
> if I calculate using a given formula). This is not good for 'tunable'
> FIR filters which I might want to change the cutoff in real time
> between 20Hz and 2000Hz, as the filter appears to 'get stuck' at
> 1000Hz :-( This phenomena I is also observed with using very high FIR
> length (i.e. 501 coefficients)

These days a "very high filter length" would be six or seven
digits.

> However, it needs to be FIR as I need linear phase. Maybe the Kaiser
> window will be better? But a lot of time spend developing if results
> unsatisfactory.

The Kaiser window will not help. The main benefit of the Kaiser
window is a bit better control of the attenuation than with the
other windows. In fact, be prepared to use a twice as long Kaiser
window as, say, a triangular window, for the same filter spec.

I would suggest you dropped a question at comp.dsp where you
outline your application and what you try to achieve, along
with a description of what you have tried. I know it is possible
to implement low-freq filters effectively as sub-band filters,
but I have never tried that myself. I don't know if that would
be a feasible solution for your applicaion.

Rune