Since computers are performing an increasing percentage of any calculations required, the Walsh Transform deserves as much of a mention as its Fourier counterpart. Figure 18 shows a random noise signal (taking values between 0 and 255) and its Fourier reconstruction: The rejection of hard edges, or whatever the Fourier transform considers to be noise, is evident. Retaining the integer part of the coefficients, in this example, will only affect the reconstructed waveform marginally. On the other hand, the Walsh reconstruction is a faithful copy of the unprocessed signal: Retaining the integer part of the coefficients, for this data set, will only deviate from the initial points by +/-0.5%. Both transforms, of course, return a periodic copy of the dataset window supplied to them.
The (Discrete) Fourier transform will decompose a signal in its constituent frequencies, but the main drawback is the computational intensity: For 's' sample points , s2 sine (or cosine) calculations are required; the same is true for the Inverse transform, as well. On the side of raw computing power, several possibilities exist for increasing efficiency: Several processors include a built- in floating point coprocessor or dsp extension; it is also possible to get a dedicated signal processing chip. On a more tactical side, a fast transform (FFT) will remove the inherent redundancy in the calculations; it is also possible to use a look- up table for sines, but this involves some loss of accuracy, if the number of samples is not constant, or is very large.
Another option to improve performance, is not to require trig calculations at all. If the component functions need to be orthogonal, choices are not confined to sinewaves by any means; surely pulses are more suitable to computers: Any number of orthogonal pulse trains can be generated- figure 17 shows the first eight: The Walsh transform for 's' data samples only needs s2 comparisons (Exclusive- Or operations) and s2 additions (or subtractions.) Even the final normalisation operation can simply be a shift- right instruction, if the number of data points is an integer power of two.
The important point is that all Walsh functions can be derived from a master frequency only by using frequency division stages and Exclusive Or gates. The advantage over a Fourier implementation, if a hardware solution is chosen, is obvious. If a VCO is substituted for the master oscillator, in order to cope with the transient portion of the synthesized waveform, Walsh waves are again more convenient: The circuit complexity required to shift the frequencies of several sinewave generators in synchronisation would be quite prohibitive.
There is also a disadvantage I would not like to hide: Some of the Walsh functions do not have a constant mark- to- space ratio between any triplet of signal transitions- therefore they do not explicitly provide frequency information- they do, however give sequency information. (Sequency is half the number of times the signal crosses its mean value in unit time.) This happens with waves whose sequency is not an (integer) factor of the number of samples (ie 3, in this example, or W5 and W6.) The Fourier components having the same order of frequency can also be a little troublesome unless the number of samples per sinewave cycle is large: The average value of the sampled sinewave cycle is not zero, to some extent affecting accuracy.
(Main bug hopefully removed!)