From: dr DanW on
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

"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