[sdiy] Waveform analysis into non-sine components

Magnus Danielson magnus at rubidium.dyndns.org
Tue Apr 10 23:32:37 CEST 2012


On 04/10/2012 04:06 PM, Neil Johnson wrote:
> Hi Tom,
>
>> Can anyone give me some useful references for the above topic?
>
> Well, there are many references, but they all fall foul of your later
> requirement:
>
> "hideous pages of academic maths are really only intended for academic
> mathematicians and don't serve to teach the rest of us anything much"
>
> Ironic, really, when that's *exactly* what you're asking.

Well, there is a few concepts which takes a little bit of math with it, 
but not hideously large amounts.

They key concept here is cross-correlation. Cross correlation gives you 
an amplitude for "how like" two signals are. There is a strict 
mathematical definition for this, and for sampled waveforms there is an 
equivalent formulation.

If you take two sine waves of different frequencies, these will give you 
(if properly executed cross-correlation is used) a cross-correlation 
factor of 0. When two signals have no cross correlation, we say that 
they are orthogonal.

What we do in transforms such as the Fourier transform is to set up a 
set of waveforms which is orthogonal to each other. Another aspect is 
that each such waveform shall be normalized to have the amplitude of 1.
With such a set, you can then separate your N sample waveform into N 
amplitudes of N orthogonal waveforms. Multiplying these amplitudes with 
the waveforms and sum it up will re-create the waveform.

The orthogonal set of e^ix waveforms is the basis for Fourier transform, 
with sine and cosine transforms as cousins. The Walsh transform has a 
completely different set of signals, being binary.

The concept of orthogonality and cross-correlations shines through and 
as you get deeper into it, it becomes very handy and clear.

The hard thing is really to come up with an orthogonal set of waveforms.

The thing which makes Fourier transform so useful is both that it 
applies to problems we often encounter, but also from the fact that the 
basic e^ix can be decomposed into e^i(a+b)=e^ia * e^ib and thus allows 
for intricate plays in butterfly patterns which makes processing cheap.

A related and useful transform is the LaPlace transform, which has a 
discrete equivalent in the Z-transform.

Some of the math can be horrendous, but it can be worthwhile to learn 
some of it, since it looks worse than it really is in many instances, 
it's just a lot of tricks and details all over and over again.

The trick remains to understand the concept of cross correlation, as it 
is really the key to generic understanding of how transform mechanisms 
work. Once understood the linear transform concepts should not be too 
hard to derive from that.

Cheers,
Magnus



More information about the Synth-diy mailing list