Command-line Fourier filter function for time-series signal vector y; 'samplingtime' is the total duration of sampled signal in sec, millisec, or microsec; 'centerfrequency' and 'frequencywidth' are the center frequency and width of the filter in Hz, KHz, or MHz, respectively. If 'shape' = 1, the filter is Gaussian; as 'shape' increases, the filter shape becomes more and more rectangular (faster cut-off rate). Set 'mode' = 0 for band-pass filter, 'mode' = 1 for band-reject (notch) filter. Click here to view or download just this function.
iFilter is a
keyboard-operated interactive Fourier filter function for
time-series signal (x,y), with keyboard controls that allow you to
adjust the filter parameters continuously while observing the
effect on your signal dynamically. Optional input arguments set
the initial values of center frequency, filter width, shape,
plotmode (1=linear; 2=semilog frequency; 3=semilog amplitude;
4=log-log) and filter mode ('band-pass', 'low-pass', 'high-pass',
'band-reject (notch), 'comb pass', and 'comb notch'). In the comb
modes, the filter has multiple bands located at frequencies 1, 2,
3, 4... times the center frequency, each with the same
(controllable) width and shape.
The filtered signal can be returned as the function value, saved as a ".mat" file on the disk, or plays through the computer's sound system. Press K to list keyboard commands. This is a self-contained Matlab function that does not require any toolboxes or add-on functions. Click here to view or download and place it in the Matlab path.
At the Matlab command prompt, type: ifilter(x,y) or ifilter(y) or ifilter(xymatrix) or ry=ifilter(x,y,center,width,shape,plotmode,filtermode)
Version 4.3, June 2016
Periodic waveform with 2 frequency components at 60 and 440 Hz.
Example 2: uses optional input arguments to set initial values:
Example 3: Picking one frequency out of a noisy sine wave.
Example 4: Square wave with band-pass vs Comb pass filter
t = 0:.0001:.0625;
Example 5: MorseCode.m uses iFilter to demonstrate the abilities and limitations of Fourier filtering. It creates a pulsed fixed frequency (0.05) sine wave that spells out “SOS” in Morse code (dit-dit-dit/dah-dah-dah/dit-dit-dit), adds random white noise so that the SNR is very poor (about 0.1 in this example). The white noise has a frequency spectrum that is spread out over the entire range of frequencies; the signal itself is concentrated mostly at a fixed frequency (0.05) but the modulation of the sine wave by the Morse Code pulses spreads out its spectrum over a narrow frequency range of about 0.0004. This suggests that a Fourier bandpass filter tuned to the signal frequency might be able to isolate the signal from the noise. As the bandwidth is reduced, the signal-to-noise ratio improves and the signal begins to emerges from the noise until it becomes clear, but if the bandwidth is too narrow, the step response time is too slow to give distinct “dits” and “dahs”. The step response time is inversely proportional to the bandwidth. (Use the ? and " keys to adjust the bandwidth. Press 'P' or the Spacebar to hear the sound). You can actually hear that sine wave component better than you can see it in the waveform plot (upper panel), because the ear works like a spectrum analyzer, with separate nerve endings assigned to to specific frequencies, whereas the eye analyzes the graph spatially, looking at the overall amplitude and not at individual frequencies. Watch an mp4 video of this script in operation, with sound. Also on YouTube.
Example 6: This example shows a 1.58 sec duration audio recording of the spoken phrase "Testing, one, two, three", previously recorded at 44000 Hz and saved in WAV format (download link) and in ".mat" format (download link), loaded into iFilter, which is initially set to bandpass mode and tuned to a narrow segment that is well above the frequency range of most of the signal. It seems as if though this passband would miss most of the frequency components in the signal, yet even in this case the speech is intelligible, demonstrating the remarkable ability of the ear-brain system to make do with a highly compromised signal. Press P or space to hear the filter's output. Different filter settings will change the timbre of the sound.
iFilter 4.3 KEYBOARD
CONTROLS when figure window is topmost:
Adjust filter frequency.......Coarse (10% change): < and >
Fine (1% change): left and right cursor arrows
Adjust filter width...........Coarse (10% change): / and "
Fine (1% change): up and down cursor arrows
Filter shape..................A,Z (A more rectangular, Z more Gaussian)
Filter mode...................B=bandpass; N or R=notch (band
L=Low-pass; C=Comb pass; V=Comb notch.
Select plot mode..............1=linear; 2=semilog frequency
3=semilog amplitude; 4=log-log
Print keyboard commands.......K Pints this list
Print filter parameters.......Q or W Prints ifilter with input
arguments: center, width, shape,
Print current settings........T Prints list of current settings
Switch SPECTRUM X-axis scale..X switch between frequency and period
on the horizontal axis
Switch OUTPUT Y-axis scale....Y switch output plot between fixed or
variable vertical axis.
Play output as sound..........P or Enter
Save output as .mat file......S
This page is part of "A Pragmatic Introduction to Signal Processing", created and maintained by Prof. Tom O'Haver , Department of Chemistry and Biochemistry, The University of Maryland at College Park. Comments, suggestions and questions should be directed to Prof. O'Haver at firstname.lastname@example.org.
Last updated: March, 2018. Number of unique visits to this site since May 17, 2008: