help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Hilbert transform


From: Sergei Steshenko
Subject: Hilbert transform
Date: Fri, 6 Jul 2012 09:44:04 -0700 (PDT)

Hello,

i am talking about 'hilbert' function from from 'signal-1.1.3/hilbert.m' file, 
so Octave help list purists are welcome to send me with my uncomfortable 
questions to octave-dev list.

But I'll ask my questions here - from my reading (and recollections of what I 
learned a long long time ago) the issue is mathematical/computational.

First a couple of references:

1) http://w3.msi.vxu.se/exarb/mj_ex.pdf - I think put together really nicely;
2) http://en.wikipedia.org/wiki/Hilbert_transform
.

Wherever we look, we find that the definition of Hilbert transform is through 
integral of a _real_ function, i.e.

hilbert(u(t)) == integral_from_minus_to_plus_inf("u(tau) / (t - tau)", "dtau")

and as such it should be a _real_ function of 't' provided u(t) is a real 
function of 't'.


Also, it is proven that

hilbert(hilbert(u(t))) == -u(t)
.

Now, here is Octave and its package reality:


"
octave:1> hilbert([1 2 3 4])
ans =

   1 + 1i   2 - 1i   3 - 1i   4 + 1i

octave:2> hilbert(hilbert([1 2 3 4]))
warning: HILBERT: ignoring imaginary part of signal
ans =

   1 + 1i   2 - 1i   3 - 1i   4 + 1i

octave:3>
".

Three violations already:

1) output is complex rather than real;
2) the transform is not invertible;
3) since Hilbert transform is linear, complex input should be accepted 
according to

hilbert(foo + i * bar) == hilbert(foo) + i * hilbert(bar)
.



To put things politically correctly, Hilbert transform is a canine female to 
calculate - because of the above "/ (t -tau)", and it's problematic to 
calculate in discrete domain.

So, my first practical question is: "What does Matlab do ?".

Thanks,
  Sergei.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]