[Simple Example]
[Command line function] [Interactive Fourier Filter] [Application of a narrow bandpass filter]

The Fourier filter is a type of filtering
function that is based on manipulation of specific frequency components
of a signal. It works by taking the Fourier transform of the
signal, then attenuating or amplifying specific frequencies, and
finally inverse transforming the result. Care must be taken to use
both the sine *and *cosine (or equivalently frequency *and
*phase, or real *and *imaginary) components of the
Fourier transform. The example below is a crude low-pass, sharp
cut-off filter, which simply cuts off all frequencies above a
user-specified limit. The assumption is made here that the
frequency components of the signal fall predominantly at low
frequencies and those of the noise fall predominantly at high
frequencies. The user tries to find a cut-off frequency that will
allow most of the noise to be eliminated while not distorting the
signal significantly.

*The signal at the top left seems to be
only random noise, but its power spectrum (top right)
shows that high-frequency components dominate the signal. The
power spectrum is expanded in the X and Y directions ( bottom
left) to show more clearly the low-frequency region. Working on
the hypothesis that the components above the 20th harmonic are
noise, the Fourier filter function can be used to delete
the higher harmonics and to reconstruct the signal from the
first 20 harmonics. The result (bottom right) shows the signal
contains two bands at about x=200 and x=300 that are totally
obscured by noise in the original signal.*

SPECTRUM, the freeware signal-processing application for Mac OS8 and earlier, includes a crude Fourier low-pass filter function, with adjustable harmonic cut-off.

InteractiveFourier FilteriFilter 4.3 |
The custom Matlab/Octave function
FouFilter.m is a more flexible
Fourier filter that can serve as a lowpass, highpass,
bandpass, or bandreject (notch) filter with variable
cut-off rate. Has the form xx=[0:.001:2*pi]';signal=sin(20*xx); noise=randn(size(xx)); x=1:2*length(xx)'; y=[noise;signal+noise]; % sine wave is added halfway through. SignalToNoiseRatio=std(signal)/std(noise) FilteredSignal=foufilter(y',1,20,100,5,0); subplot(2,1,1) plot(x,y); title(' Sine wave is added halfway
through.')subplot(2,1,2) plot(x,FilteredSignal); title('Signal filtered with FouFilter.m') iFilter 4.3, an Interactive Fourier
Filter for Matlab, allows you to select from six
filter modes ('band-pass', 'low-pass', 'high-pass',
'band-reject (notch), 'comb pass', and 'comb notch'). (In
the
MorseCode.m
uses iFilter to demonstrate the abilities and limitations
of Fourier filtering. It creates a pulsed Watch an mp4 video of this script
in operation, with sound. Also on YouTube. |

An older version of this page is also available in French.

Last updated August, 2017. This page is part of "

Unique visits since May 17, 2008: