2
$\begingroup$

I have multiple files from an experiment in frequency-domain that I would like to use ifft() function to convert to the time domain in R to apply signal processing techniques.

My question is about the principle of this conversion: at the moment my frequency values are non-complex numbers (I believe they are in their absolute form).

  • So, to convert these columns using ifft() function, should I use the absolute values or there is a way break these values down to the complex form and then do ifft() on those?

  • My other question is, which form (absolute or real) is the best form to save my data in the time domain for further signal processing techniques?

If this helps, my data looks like this:

| Time (s)| 0.0000 |0.000164|... 
|:--------|--------|:-------|:-------
| 1.52kHz |  2747  |  350   |...
| 3.05kHz |  2996  |  420   |...
| 4.57kHz |  4078  |  300   |...
|   ...   |  ...   |  ...   |...

Total of $513$ rows $\times$ $122041$ cols, sampling frequency of $1562.5\textrm{ kHz}$.

$\endgroup$
  • 2
    $\begingroup$ I doubt that you can reproduce the exact time domain signal from this table. It looks like a spectrogram and these cannot be inverted to yield the original time-domain signal (you're missing the phase information). In general, saving the absolute value loses information, compared to real/imaginary representation. The question is, why you need to get the time-domain function. Maybe, if you describe what kind of signal processing you want to do, we can help doing it with the data you have available? $\endgroup$ – Maximilian Matthé Jan 9 '17 at 12:40
  • $\begingroup$ @MaximilianMatthé Thanks for your comprehensive answer. This data is from an electrostatic sensor that I was hoping to apply some signal processing techniques (such as wavelet, STFT or even analysing it in the time domain). $\endgroup$ – Kamran Jan 9 '17 at 12:46
  • $\begingroup$ @MaximilianMatthé Also, what's the best way to average the values for each second in the frequency spectrum (at the moment the interval is 0.000164s)? I wonder if averaging is my best option or there is a better way to do what I would like to do? $\endgroup$ – Kamran Jan 9 '17 at 12:50
  • $\begingroup$ This is an old problem: control engineers estimate the poles/zeros all the time. There are conditional solutions: From: arxiv.org/pdf/1606.04861.pdf "PHASE retrieval is a longstanding problem in many fields of physics and applied sciences [1], [2], [3], [4]. Sufficient conditions ensuring that the phase of the signal and hence the full E(t) can be reconstructed from the knowledge of the intensity profile only |E(t)|^2 are well known [2], [3],[5], [6]" But be aware that this will give a model that matches the data; but might not be the "right" model. $\endgroup$ – rrogers Jan 11 '17 at 21:52
  • $\begingroup$ To continue: this gives the phase on the imaginary axis where you can do a numerical/symbolic inverse transform accurately if 1) All of the poles are in the LHP and the network goes to 0 exponentially (? as I recall) at infinity. $\endgroup$ – rrogers Jan 11 '17 at 21:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.