I am facing a problem which I could not find any robust solution for . Assume we have a signal, $x$, composed of sum of a few sinusoidal. e.g. $$x=A_1\sin(\omega_1t+\phi_1)+A_2\sin(\omega_2t+\phi_2)+A_3\sin(\omega_3t+\phi_3)+\ldots +A_n\sin(\omega_nt+\phi_n)$$ We have sampled the signal, ($30\%$) of samples are high resolution 10-Bits and the other $70\%$ are low resolution 3-4 Bits samples. enter image description here Also,assume a sub-set of frequencies are known(for example $\omega_1, \omega_5$ and $\omega_{10}$ out of $\omega_1,\ldots , \omega_5$ are known).

  1. How can we reconstruct the original signal?
  2. Is there any method which can reconstruct the signal from these samples?

Moreover, we have these assumptions:

  • The sinusoidals have unknown amplitudes ($A_n$)
  • of course, we know when the high resolution samples occur
  • We know maximum number of possible independent frequencies in the summation
  • and spacing of sampling of high resolution sampling is reconfiguration and can be programmed to be regular or random (whichever is suitable?)

For examples, the below is a signal sampled uniformly at Nyquist rate($50\textrm{ Hz}$), with two components of $25\textrm{ Hz}$ and $12\textrm{ Hz}$. Green samples are high resolution samples, red samples are samples with considerable error (low resolution) and the blue curve is the original signal. enter image description here

Following code provides an example of mentioned data:

Fs=1000; %sampling frequency 
x=0.5*sin(2*pi*300*t)+0.6*cos(2*pi*460*t)+0.2*cos(2*pi*60*t)+0.8*cos(2*pi*40*t)+1.6*cos(2*pi*12*t); %Original Signal
NoisySample=x+0.1*randn(size(x));           %Uniform Noisy Samples
ClearSamples=x(1:10:end); %Clear Samples

I would appreciate any hint and direction.

  • $\begingroup$ I've tested the curve fitting, but unfortunately it is too unstable. I have solution in which using Fourier transform of low resolution samples I find the frequencies, and then fit a model of sum of sins to high resolution samples, but it heavily depends upon resolution of FFT which obviously is not high. I have successfully recovered, in some cases, the original signal using curve fitting toolbox of matlab. I have tried compressive sensing but it is too complex computationally and I am not seeking a method in that field. $\endgroup$
    – MimSaad
    Apr 2, 2017 at 7:47

1 Answer 1


i will reframe the question a little:

we have

$$\begin{align} x(t) &= \sum\limits_{n=1}^N r_n \cos(\omega_n t + \phi_n) \ + \ \epsilon(t) \\ \\ &= \sum\limits_{n=1}^N a_n \cos(\omega_n t) + b_n \sin(\omega_n t) \ + \ \epsilon(t) \\ \end{align}$$


$$\begin{align} a_n &= r_n \cos(\phi_n) \\ b_n &= -r_n \sin(\phi_n) \\ \\ r_n &= \sqrt{a_n^2 + b_n^2} \\ \\ \phi_n &= \arg\{a_n - j b_n \} \\ &= -\operatorname{atan2}(b_n,a_n) \\ \end{align}$$

and $\epsilon(t)$ is the unknown error signal.

first you have to assume that $\epsilon(t)$ contains no components having frequencies of any of the $\omega_n$ in it, otherwise that component will just team up with the component having amplitude $r_n$.

if you know all of the $\omega_n$ in advance, you can calculate all of the $a_n, b_n$ by using an inner product:

$$\begin{align} a_n &= \frac{\omega_n}{M\pi} \int\limits_{t_0}^{t_0+\tfrac{2M\pi}{\omega_n}} x(t) \cos(\omega_n t) \ dt \\ \\ b_n &= \frac{\omega_n}{M\pi} \int\limits_{t_0}^{t_0+\tfrac{2M\pi}{\omega_n}} x(t) \sin(\omega_n t) \ dt \\ \end{align}$$

$t_0$ can be the most convenient time for you and $M$ should be a large positive integer (and need not be the same $M$ for each frequency component $\omega_n$), but the wider your integration is, the better error rejection you will have.

from the $a_n$ and $b_n$ coefficients, you can calculate $r_n$ and $\phi_n$.

  • $\begingroup$ thanks, though your answer does not directly address my question (seems I failed to convey), but indeed very useful for my other work. Since the formulation all are continuous, I wonder if I can use it in discrete domain? $\endgroup$
    – MimSaad
    Apr 2, 2017 at 8:06

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.