# Decoupling two signals where one is a delayed version of the other

I have a signal $y(t)$ that consists of the sum of two signals where one is a time delayed version of the other.

$y(t) = x(t) + x(t-t_{d})$

$x(t)$ is known but the time delay $t_d$ is not.

I would be interested to know what (if any) techniques could be employed to recover the time delayed signal from $y(t)$.

I believe for techniques such as ICA it is required to have two receivers to decouple the signals fully however neither signal would be known in advance for this case.

• Can you be more specific, which signal is known: x(t) or y(t)?. Can you give a signal example of what you want to do? – Maximilian Matthé Dec 13 '16 at 12:54
• Look up echo cancellation techniques. – msm Dec 13 '16 at 14:27
• Still, after your edit you did not clarify the mentioned problems. We cannot help you this way. – Maximilian Matthé Dec 14 '16 at 13:11
• This sounds kind of like an XY problem. It is easier to help you if you give a bit more insight as to the end goal that you're trying to accomplish. – Jason R Dec 14 '16 at 13:57
• Again, as Marcus Müller mentioned below, why do you want to recover the time-delayed signal x(t-td) from y(t), when you know x(t) already beforehand? – Maximilian Matthé Dec 14 '16 at 14:49

A first step consists in exploiting the known properties of your signal, by starting from a transformation that converts it into a more readable form. If it is non-stationary, like a chirp, you can use a time-frequency or a time-scale transform. The picture below is borrowed from Time-Frequency Toolbox:

While the signal looks complicated, the delay between the two offset chirps becomes apparent in a time-frequency plot. Then, the first option, if you have chosen an invertible transformation, is to crop the part of the image concerning the second chirp, set the rest to zero, and invert.

Then, if you have the knowledge of the original signal, you can plug other separative techniques in, like source separation techniques, and adaptive matched filtering. The problem can be reframed to echo cancellation. A similar problem appears in geophysics under the name of multiple suppression. The following papers perform the adaptive filtering in wavelet domains. The second one adds constraints, which could be helpful to restrict your delay within some interval:

You can employ cross correlation of the received signal with the signal you know that is contained.

Fs = 1000;
t = np.arange(0, 2, 1./Fs)
s = lambda t: np.cos(2*np.pi*10*t*t)

t0 = 0.5

single = s(t)
signal = s(t) + s(t-t0)

plt.subplot(1,2,1)
plt.plot(t, signal)
plt.plot(t, single)

plt.subplot(1,2,2)
plt.plot(t, np.correlate(signal, single, 'same'));


The delay between the peaks is the time distance between both signals.

• Thanks, I am not trying to extract the time delay itself rather decouple the time domain signals from each other. – CatsLoveJazz Dec 13 '16 at 11:50
• @CatsLoveJazz that doesn't make any sense. You say you know the original signal, why would you then try to recover it from the sum? Also, decouple is pretty much not a defined term here. – Marcus Müller Dec 13 '16 at 14:01
• If by decouple you mean remove the delayed component, you can simply subtract a delayed version of the signal from itself. In other words - a simple filter with kernel [1,0,0,...(delay length)...,0,0,-1] – Speedy Dec 14 '16 at 13:57