Given a signal that consists of three 1.xxx kHz signals added together (where xxx is never more than 0.01). Each of the three 1kHz signals is 60 degrees out of phase (first is offset by 0 degrees, next is offset by 120 degrees, and the third is offset by 180 degrees), What's the best way to detect the fact that there are three "instances" of very similar frequency present, and the phase offset of each?

I tried using FFT but it doesn't seem to have a notion of phase. I searched the internet a bit for FFT and phase but can't find any way to use FFT to extract multiple instances of a frequency separated only by phase.

I think in order to use FFT in the traditional sense, I would need to have an extreme number of bins (1000*sample_rate?).

I built a gnuradio flow graph to experiment with the concept.

enter image description here

The resulting FFT shows peaks at 0kHz and 1kHz. I can't think of a way to extract the original three signals out of the original.

My use case deals with input signals that differ in frequency by as little as 0.001Hz. Detecting the presence of the component signals and identifying their precise frequency is what I need to do. Their frequencies vary ever so slightly over time.

FFT result is peaks at 0kHz and 1kHz


1 Answer 1


It is not possible. Let's consider the case of two cosines, with angles $\theta = 2\pi f_0 t + \alpha$ and $\phi = 2\pi f_0 t + \beta$. Then their sum is equal to $$2\cos\left(\frac{\alpha-\beta}{2}\right)\cos\left(2\pi f_0 t + \frac{\alpha+\beta}{2} \right).$$

Note that, if you measure the amplitude and phase of this signal, you can find plausible candidates for $\alpha$ and $\beta$, but in general there will be multiple possible solutions. Note that the signal could also be zero! As you increase the number of original cosines at $f=f_0$, the ambiguity will also increase.

As a final note, the DFT does provide phase information. The GnuRadio tools, however, only plot the magnitude of the DFT, and there the phase information is lost.


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.