I have been wracking my brain over this problem for weeks and I finally have to throw in the towel and ask for help. My background is not formally in signal processing, so I may just lack the experience to solve what is a "simple" problem.

Problem statement:

I have a set of $N$ complex-valued time series $S_1, S_2,\ldots,S_N$. The timeseries consist of an unknown complex signal that has been copied, shifted in time, shifted in phase, and scaled. In mathematical terms, the timeseries can be defined by the following equation:

$$S_n(t) = x_0(t) + A x_o(t-\tau_n)e^{i\theta \tau_n}$$

  • $x_0(t)\in \mathbb C$ is the unknown complex signal. It is the same in all $S$, i.e. it does not change from $S_{n-1}$ to $S_n$.

  • $\tau_n \in \mathbb R$ is an unknown value that time shifts and phase shifts the copy of $x_0$. It is known to change slowly from $S_{n-1}$ to $S_n$.

  • $A\in \mathbb R$ is an unknown constant that scales the copy of $x_0$. It is slightly noisy, but we assume this can be neglected.

  • $\theta\in \mathbb R$ is a known constant that relates the time shift to the phase shift.

The final goal is to subtract $x_0(t)$ from all $S_n(t)$ so that we are left with only the time-shifted and phase-shifted version:

$$\hat S_n(t) = Ax_o(t-\tau_n)e^{i\theta \tau_n}$$

I would be very grateful for nudges in the right direction. Do any algorithms or methods spring to mind as being suitable for this task?

  • $\begingroup$ If $x_0(t)$ is constant, why does it have a $(t)$? isn't $x_0(t) = x_o(t-t_0)$ if it's constant? $\endgroup$ Jun 13, 2021 at 15:25
  • $\begingroup$ $x_0(t)$ is constant in the sense that it is not changing from one recorded timeseries to another. It is definitely not constant with respect to $t$. $\endgroup$ Jun 13, 2021 at 15:57
  • $\begingroup$ ah! So, each $S_i$ is one of $N$ observations of $x(t)$? Can you tell me what things do change between different observations? Does $\theta$ change? Does $A$ change? $\endgroup$ Jun 13, 2021 at 16:12
  • $\begingroup$ because $t_0$ does change from $S_1$ to $S_n$, wouldn't it make more sense to call it $t_i$? Is it OK if I go into your question and rename it to $\tau_i$, even, just to make clear it's separate from the (running variable) time? Is it right to assume $A\in\mathbb R$? $\endgroup$ Jun 13, 2021 at 16:15
  • $\begingroup$ (I know I'm asking a lot of questions, but I think it would be sad if I got a misunderstanding of your problem here, and in my experience, writing down things cleanly is very helpful to understand a problem) $\endgroup$ Jun 13, 2021 at 16:20

2 Answers 2


An Approach

We want to get rid of the pure $x_0(t)$ in $S_n$; so let's do this:

  • $k\ne m\ne l$ be three different integers between 1 and $N$.
  • Define $d_{l,m}=\tau_l-\tau_m$


\begin{align} S_m &= x_0(t) + Ax_0(t-\tau_m)e^{i\theta \tau_m}\\ S_l &= x_0(t) + Ax_0(t-\tau_m+d_{l,m})e^{i\theta (\tau_m+d_{l,m})}\\ &= x_0(t) + Ax_0(t-\tau_m+d_{l,m})e^{i\theta \tau_m}e^{i\theta d_{l,m}}\\[1em] %%% R_{l,m}(t) &:=S_m(t)-S_l(t) \\ &= A\left(x_0(t-\tau_m)e^{i\theta \tau_m}-x_0(t-\tau_m+d_{l,m})e^{i\theta \tau_m}e^{i\theta d_{l,m}}\right)\\ &= Ae^{i\theta \tau_m}\left(x_0(t-\tau_m)-e^{i\theta d_{l,m}}\cdot x_0(t-\tau_m+d_{l,m})\right)\\[1em] %%% \mathcal F\{R_{l,m}\}(f)&=Ae^{i\theta \tau_m}\left(\mathcal F\{x_0(t-\tau_m)\}-e^{i\theta d_{l,m}}\cdot \mathcal F\{x_0(t-\tau_m+d_{l,m})\}\right)\\ &=Ae^{i\theta \tau_m}\left( \mathcal F\{x_0(t)\}e^{i2\pi f\tau_m} -e^{i\theta d_{l,m}}\cdot \mathcal F\{x_0(t)\} e^{i2\pi f\tau_m}e^{-i2\pi fd_{l,m}} \right)\\ &=Ae^{i\theta \tau_m}e^{i2\pi f\tau_m} \mathcal F\{x_0(t)\} \left( 1- e^{i\theta d_{l,m}}\cdot e^{-i2\pi fd_{l,m}} \right)\\ &=Ae^{i\tau_m(\theta+2\pi f)} \left( 1- e^{id_{l,m}(\theta -2\pi f)} \right) \mathcal F\{x_0(t)\}\\[1em] \frac{\mathcal F\{R_{l,m}\}}{\mathcal F\{R_{k,m}\}}&=\frac{ 1-e^{id_{l,m}(\theta -2\pi f)} } { 1-e^{id_{k,m}(\theta -2\pi f)} } \end{align}

Assuming "changes slowly" means that if you pick the difference between $k$ and $m$ half as large as between $l$ and $m$, then $d_{k,m}=\frac12 d_{l,m}$:

\begin{align} &=\frac{ 1-e^{id_{l,m}(\theta -2\pi f)} } { 1-e^{i\frac12d_{l,m}(\theta -2\pi f)} }&\big\|\cdot1 =\frac{1-e^{i\frac12d_{l,m}(\theta -2\pi f)}}{1-e^{i\frac12d_{l,m}(\theta -2\pi f)}}\\ &=\frac { \left( 1-e^{id_{l,m}(\theta -2\pi f)} \right) \left( 1-e^{i\frac12d_{l,m}(\theta -2\pi f)} \right) } { 1^2+\left(e^{i\frac12d_{l,m}(\theta -2\pi f)}\right)^2 }\\ &= \frac { 1-e^{id_{l,m}(\theta -2\pi f)} } { 1+e^{id_{l,m}(\theta -2\pi f)} } \left( 1-e^{i\frac12d_{l,m}(\theta -2\pi f)} \right) \\ \end{align}

Gotta go, maybe you have an idea how to improve on this.

  • $\begingroup$ Hi Marcus, thank you very much for taking the time to respond to my question and for helping me formatting it correctly. On the line where you take the Fourier transform of $R_{l,m}$, you seem to be saying that $\mathcal F\{x_0(t-\tau_m) e^{i\theta \tau_m}\}(f) = e^{i\theta \tau_m}\mathcal F\{x_0(t-\tau_m\}(f)$. But I don't think this is valid because solving the fourier transform of a signal shifted by $\tau$ involve doing the substitution $t' = t-\tau$, which also alters the $e$ term you move outside the fourier transform : $e^{i\theta \tau_m}$ becomes $e^{i\theta (t - t')}$ $\endgroup$ Jun 15, 2021 at 21:02
  • $\begingroup$ the exponential term I moved out of the Fourier transform is just a constant factor, as it's independent of $t$, so that's "legal". $\endgroup$ Jun 15, 2021 at 22:10
  • $\begingroup$ I see. Well, I'm still not sure where to go from here, but at least now I know how to represent the signals in the frequency domain so that helps. I will work on it some more. $\endgroup$ Jun 16, 2021 at 19:34

Another Approach

I'm assuming here that $A$ is roughly equal to one. If it's a lot bigger or a lot smaller, then the problem does change quite a bit.

A first estimate to getting $x(t)$ would simply to take the mean of the observations

$$x_1(t) = \frac{1}{N}\sum_{n=0}^{N-1}s_n(t)$$

All the $x_0(t)$ terms should add coherently whereas the time and phase shifted terms will be most uncorrelated.

Next we take a look at the transfer functions (I'll use capital letters for frequency domain)

$$S_n(\omega) = X(\omega)\cdot (1 + A\cdot e^{j(\theta-\omega)\tau_n})$$

So transfer function between $S$ and $X$ basically a complex comb filter that has maxima at $(\theta-\omega)\tau_n = 2k\pi$. If $A< 1$ that it also has minima at $(\theta-\omega)\tau_n = (2k+1)\pi$.

Now you can use your first estimate $x_1(t)$ to estimate the transfer function,

$$H_{n,1} = \frac{S_n(\omega)}{X_1(\omega)}$$

This should roughly look like a comb filter. You can use the location of the maxima and maybe the maxima to estimate $\tau_{n,1}$ and the height of the maxima to estimate $A_{n,1}$.

Now you use these estimates to refine you estimate for $x(t)$

$$x_2(t) = \frac{1}{N}\sum_{n=0}^{N-1}(s_n(t)-A_{n,1}x_1(t-\tau_{n,1})e^{j\theta \tau_{n,1}})$$

Rinse and repeat until the residual error becomes small or it stops converging.

  • $\begingroup$ Thanks for your answer, but I have never worked with transfer functions. Why do you say that $S_n (\omega)$ only has minima if A is less than 1? $\endgroup$ Jun 16, 2021 at 19:37
  • $\begingroup$ $S_n(\omega)$ will always have minima. For $A<1$ the minima are easily found: they happen when $e^{j(\theta - \omega)\tau_n = -1$ and then the minimum is simply $1-A$. For $A>1$ the location of the minimum depends also on the value of A and things are more complicated. $\endgroup$
    – Hilmar
    Jun 17, 2021 at 21:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.