DSP stuff

I am working on DSP (Digital Signal Processing).

As a proof of concept, I generated a number of trivial but interesting
data sets and plotted them with gnuplut as 640x480 PNG files.

Then I generated some impulse charts for various
filter functions, and plotted them in gnuplot as PNG files.

Then I convolved the data sets with the filter functions
and plotted the results in gnuplot.

The point is, this worked, and I put it here mostly when I
was asking for advice.  At some point, I'll do something interesting
with this.

Lately I've been decoding sub-audible tones and paging tones used
to control 2-way radio equipment.  My friends own a radio shop and
sometimes need to know what control tones are being used by various
systems.  I'll post the PERL code later.  I have code to rip wav 
files apart, to renormalize the data with a lower sampling rate,
to generate tones for test purposes and to analyze the frequencies
present in the data with a variety of transforms.  It turns out the
de-rigeur FFT is a poor choice for this particular task.  I ended
up using a "goertzal transform" which worked nicely.  A FFT can
take a chunk of N samples, determine the average energy of log2(N)
equally spaced tones within the data, in Nlog2(N)units of time.
A goertzal transform can take N samples, and look for the average
energy of one tone, in N units of time.  If you are looking for less
than log2(N) tones, or if those tones are not equally spaced, you
are going to save time and have a more precise result with a goertzal
transform.  A goertzal transform is simply a function to determine the
correlation between a data set representing a sampled tone, and a
data set containing a sine wave of a single tone.