1

Please forgive me if this has already been asked. Let us assume an example with $x(t) = \sum_{i=1}^N A_i \sin(2\pi f_i t) $ under a given sampling frequency $f_s$, frequencies $\omega_i$ and Amplitudes $A_i$. My ideas was to calculate the DFT transform $\tilde{x}(\omega)$, find the peaks of $|\tilde{x}(\omega)|$ and infer the original amplitudes from them.

However, there are several obstacles.

  1. There is leakage, and the Maximum of the peak is a bad indicator for the Amplitude of the signal; the normalization factor seems to be dependent on several factors.
  2. The Peaks overlap.
  3. I need a window function to get rid of the side lobes, which again changes my normalization.

Do you have experience in doing this? What is the best practice? Any useful literature?

Marcus Müller
  • 30,525
  • 4
  • 34
  • 58
varantir
  • 111
  • 5
  • If you can, just sample the signal for a longer time. That will increase the "true" resolution of your DFT and you'll be able to tell the peaks apart. – MBaz Feb 19 '19 at 15:38
  • possibly a near duplicate of https://dsp.stackexchange.com/questions/28448/measure-scalloping-loss-of-window-function – hotpaw2 Feb 19 '19 at 15:54
  • Check out my answer here for a start: https://dsp.stackexchange.com/questions/56038/amplitude-estimating-using-a-windowed-dft – Cedron Dawg Mar 21 '19 at 20:15

1 Answers1

1

Do you want to get the peak, or the amplitude, of the time domain signal given the spectrum? Since energy is conserved, the time domain energy amplitude can easily be found by adding the energy from each frequency bin of the spectrum. However, you cannot find the time domain peak simply by looking at the FFT frequency bin magnitudes. Consider an extreme case: the spectrum of an impulse is fairly smooth in spite of the fact that the impulse will have a strong peak.

Digiproc
  • 279
  • 1
  • 6