Fourier transform from the PSD

I need to compute the Fourier transform o the time derivative of the autocorrelation function (ACF) of a discrete signal with sign changed. Lets call it $$Y(\omega)$$.

I had some computations problems due to noise and seasonality. In order to solve those issues using existing libraries, I employed methods that gave me the Power Spectral Density (PSD). However, it is not exactly what I need.

I tried to compute $$Y(\omega)$$ from the PSD. For this I applied the iFFT trying to obtain the ACF, and then: just 1) changed its sign, 2) applied the time derivative 3) applied the FFT.

My questions are the following:

1 - Should de above procedure leads me from the PSD to $$Y(\omega)$$?

2 - I did not get completely satisfactory result because the imaginary part of $$Y(\omega)$$ is not close to zero for small $$\omega$$s. I get something like the second image of this question. What could be the mistake?

• is it clear to you that the derivative multiplies the PSD by f (enhancing the high frequency components and susceptible to noise there)? With your ifft, you did a circular ACF with ifft(fft(a) * conj(fft(b)) ? Feb 7 at 17:13
• @DanBoschen, Thank you! It is not very clear to me. What is clear to me is that I can apply the FFT to the derivative of a function, or instead apply it to the function and then multiply by f (and eventually a constant term involving pi and i). I performed the iFFT directly on PSDs (for example, on the PSD obtained through pyspectrum.readthedocs.io/en/latest/… Feb 7 at 18:01

1. applied the time derivative 3)

How did you do that? A discrete differentiator is tricky. A continuous differentiator is not bandlimited (it's quite the opposite), so it can't be sampled or discretized without aliasing. $$y[n] = x[n] - x[n-1]$$ is a crude approximation at best and also introduces a half sample time delay which can be awkward. Something like $$y[n] = x[n+1] - x[n-1]$$ get's the phase mostly right but has a larger magnitude error.

You can try to apply it directly in the frequency domain simply by multiplying the PSD by $$j\omega$$ . Since the transfer function needs to be real at the Nyquist you will probably need to "massage" the high frequency portion manually.

the imaginary part of $$Y(\omega)$$ is not close to zero for small $$\omega$$

Why would it be? Differentiation in time is multiplication with $$j \omega$$ in the frequency domain. The PSD is real, so the spectrum of the time derivative should be mostly imaginary.

• +1 Thank you! 2nd paragraph: I also tried to avoid 2) and multiply $j \omega$ the result of 3). But I think that it is not the same as multiply $j \omega$ with the PSD as you said. What would I get with: $j \omega$ times PSD ???. ||| Last sentence: I did not understand that: do you mean the spectrum of the time derivative of the ACF? ||| I expect that the imaginary part of $Y(\omega)$ to be zero for small $\omega$ because I am studying procesess similar to those in en.wikipedia.org/wiki/Dielectric#Debye_relaxation (see $\varepsilon^{\prime\prime}$) Feb 7 at 18:33
• Here is the thing: the ACF has a real valued spectrum. That means that the time derivate of the ACF has an imaginary spectrum. That's just the way the math works. If that doesn't fit your process you need a different model. Feb 8 at 3:07
• It was a misunderstanding. I expected an imaginary spectrum, I just expected it to be near zero at low frequencies. Thanks to your comment I think I now understand that this does not happen simply because my system does not look sufficiently well represented by the model. I'm still not sure about something: Is it possible that what you meant in the second paragraph is multiplying by $j\omega$ to the FFT of the autocorrelation function ? (instead of to the PSD) Feb 8 at 11:44
• The FFT of autocorrelation function IS the PSD. They are the same thing Feb 8 at 14:33
• I meant FFT of the derivative of the autocorrelation function Feb 8 at 18:17