Could multiple echo reflections be combined to improve signal to noise ratio?
You need to be careful to look at your bunch of impulses in the fequency domain, to make sure you are really transmitting more energy at all frequencies. Your chain of 3 identical impulses will contain zero energy at certain frequencies. As a result, your echo-separation method (Tk = Sk – (Tk-10) – (Tk-20)) will have infinite gain at those frequencies (this is an IIR filter with 2 poles on the unit-circle), and hence it will be unstable.

As an example, I built 4 different "pulse train" signals (in Matlab), by the following method (an I've plotted the magnitude of the FFT):

&gt;&gt; S1 = [1;0;0;0;0;0;0;0;0;0;0];
&gt;&gt; S2 = [1;0;0;0;0;1;0;0;0;0;0];
&gt;&gt; S3 = [1;0;0;0;0;1;0;0;0;0;1];
&gt;&gt; S4 = [1;0;0;0;0;1;0;0;0;0;-1];
&gt;&gt; plot( abs([fft(S1,256),fft(S2,256),fft(S3,256),fft(S4,256)]) );




Note that S1 has a constant magnitude respnnse (equal to 1), as expected. S2 (made up of 2 impulses) has a magnitude response that goes to 0 at several frequencies (even though, on average, it has twice the power of S1).

S3 has three times the average power as S1, but unfortunately it also has zero energy at some frequencies.

S4 is built with a -1 in the last sample. As a result, it still has 3 times the average energy compared to S1, with the added property that is it never less than unity energy in any one frequency band.

The (simplistic) recovery-filter, for use with S4, would be :  Tk = Sk – (Tk-5) + (Tk-10)), but unfortunately this is also an unstable filter (having some poles outside the unit circle). The trick to making a filter like this stable is split it into two parts.

First, you run a regular IIR filter over the signal as follows:

$$T'_k = S_k + g \times T'_{k-5}$$

where $g=\frac{\sqrt5-1}{2}$. Next, you run this filter:

$$T_k = T'_k - g \times T_{k+5}$$

and the trick, with this second filter, is to compute the samples of $T_k$ in reverse order (if you want to compute 100 samples, start with sample 99, and work your way down to sample 0).

The overarching principles here are:


Spread your energy out over multiple samples, in the transmitted signal, to allow you to send more energy
Try to always ensure there is lots of energy in all frequencies of the transmitted signal (look at the FFT of the signal)
Build an inverse filter


My inverse filter method shown here is a bit perverse, using a time-reversed IIR filter. If you have plenty of CPU cycles, you can compute the correct inverse filter by building it as a long FIR filter (in theory, you need an infinitely long filter, but a long enough FIR will approximate it OK).