# Hilbert transform

**URL:** <https://www.ruby-forum.com/t/hilbert-transform/231587>\
**Category:** GNU Radio\
**Created:** [August 17, 2014, 5:05pm UTC](https://www.ruby-forum.com/t/hilbert-transform/231587 "2014-08-17T17:05:58Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [August 17, 2014, 5:05pm UTC](https://www.ruby-forum.com/t/hilbert-transform/231587/1 "2014-08-17T17:05:58Z")

</div>

Hi,  
I have made a simple flowgraph as attached.I have on query that when i  
observe the signal coming out of the ‘Hilbert transform’ block using a  
time sink then its imaginary part is shown to be zero.According to the  
theory the hilbert transform of a signal x(t) is:  
x(t)+jx~(t)  
where x~(t) is the quadrature phase component of x(t).Then why is the  
signal from the hilbert block has zero imaginary part??  
Regards,  
Ali

---

<div class="post-metadata">

**Author:** ![jason\_sam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/7993a0/32.png) [@jason\_sam](https://www.ruby-forum.com/u/jason_sam)\
**Post date:** [August 17, 2014, 5:54pm UTC](https://www.ruby-forum.com/t/hilbert-transform/231587/2 "2014-08-17T17:54:52Z")

</div>

Hi Ali,

I see an imaginary part whenever the real part drops from 1 to 0; which  
is to be expected, since the Hilbert filter is a high pass one.

Background: Remember, this is the digital world. There is no Hilbert  
transform here – there could only be a discrete Hilbert transform. And  
even that is a convolution with an infinite series and cannot be done.  
So the Hilbert transform is a FIR approximation.

Greetings,  
Marcus

---

<div class="post-metadata">

**Author:** ![jason\_sam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/7993a0/32.png) [@jason\_sam](https://www.ruby-forum.com/u/jason_sam)\
**Post date:** [August 17, 2014, 5:57pm UTC](https://www.ruby-forum.com/t/hilbert-transform/231587/3 "2014-08-17T17:57:15Z")

</div>

On Sun, Aug 17, 2014 at 11:04 AM, jason sam [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 

The Hilbert transforms a real signal into an analytic signal. Think  
about  
your case this way: you start with a real sine wave, so in the frequency  
domain, you have a delta function at +f and -f. But if you have that  
same  
sine way as a complex number, then you’ll only have a delta at +f. A  
sine  
wave travels along the unit circle, but in which direction? A complex  
(analytic) signal gives you the value and the direction, like a vector  
instead of a scalar. So we’ve reduce the ambiguity of the solution by  
providing the direction: clockwise or counter clockwise.

The Hilbert transforms the signal from real to complex by removing the  
values in the negative frequency. In fact, most HIlbert transforms (like  
the one here in GR) are just high-pass filters with the passband  
starting  
at 0 Hz that provide this conversion process.

I wrote a post showing the Hilbert transform effects without actually  
explaining it. Still, it might be helpful to understand it:

> **[Hilbert Transform and Windowing — Rondeau Research](http://www.trondeau.com/blog/2013/9/26/hilbert-transform-and-windowing.html)**
>
> We recently fixed a bug in GNU Radio where the rectangular window actually didn't work. It would fall through to the Hamming window because of a missing 'break' statement. Embarrassing bug, but not all that detrimental since the rectangular window is...

Tom
