Prev: Bug? Analytical integration of cosines gets the sign
Next: a harmless notebook crashes Windows 7: who else had it?
From: dr DanW on 5 Feb 2010 03:35 Has an efficient Hilbert Transform or Discrete Hilbert Transform been implemented in Mathematica? I can code my own, but my implementations tend to be ham-handed and not too efficient. Daniel
From: Nasser M. Abbasi on 6 Feb 2010 03:25
"dr DanW" <dmaxwarren(a)gmail.com> wrote in message news:hkgl91$70d$1(a)smc.vnet.net... > Has an efficient Hilbert Transform or Discrete Hilbert Transform been > implemented in Mathematica? I can code my own, but my implementations > tend to be ham-handed and not too efficient. > > Daniel > I do not know about the "efficient" part, but one way I learned how to do it from a class in communication is as follows. (which I am sure you know this method) Given x(t), we want to find xx(t), where xx(t) is the Hilbert transform of x(t). Algorithm: 1. find X(w), the Fourier transform of x(t) 2. Find the Fourier transform of xx(t) which -j*sgn(w)*X(w) 3. Hence xx(t) will be the inverse Fourier transform of the result of step 2. sgn(f) is the signum function. Again, do not know if this is an "efficient" way from a computational point of view, but my guess it is faster than the direct method using convolution as in xx(t)= x(t) convolve with 1/(pi*t) ? I am not sure about the discrete case now. But may be the above could be extended to discrete data just by using DFT and IDFT with some care? --Nasser |