As we know, a complex analytic signal can be obtained through Fourier transformation of a real value function, and the imaginary part can be reconstructed by Hilbert transform of real part. But I have simulated a real value function using Matlab and performance FFT on it, the imaginary part obtained through FFT is very different from that obtained through Hilbert transformation of real part, Does anyone know why.

  • 1
    $\begingroup$ You may need to zero-pad your signal for the FFT result to match a time domain Hilbert filter. $\endgroup$
    – hotpaw2
    Sep 11, 2014 at 14:55
  • 1
    $\begingroup$ If you share your Matlab code we can probably find the problem in your approach. $\endgroup$
    – Matt L.
    Sep 11, 2014 at 16:24

1 Answer 1


Judging from your question, I think that you're confusing two related but different Hilbert relations. The first one holds for causal signals, for which the real and imaginary parts of their Fourier transforms are related via the Hilbert transform. The other one holds for analytic signals (whose spectrum is zero for negative frequencies), for which the real and imaginary parts of the time domain signal are related via the Hilbert transform.

So if you have a real valued function, as described in your question, and you take its Fourier transform, then the imaginary part of the Fourier transform can only be obtained from its real part via the Hilbert transform, if the signal is causal. Also note that the corresponding time domain signal is generally not analytic (because in that case its spectrum must be zero for negative frequencies and, consequently, the time domain signal must be complex-valued).


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.