Home > On-Demand Archives > Workshops >

## Demystifying the Hilbert Transform

Dan Boschen - **Watch Now** - EOC 2022 - Duration: 02:29:24

## Workshop Description

In this workshop, Dan will introduce the Hilbert Transform and the Analytic Signal, and the various uses for them. Dan will review the fundamental points in understanding the Hilbert Transform intuitively and then he will show practical implementations and applications both in the analog and digital signal processing domains. Key limitations and gotchas will be presented that every designer should be aware of. Dan will demonstrate creative implementations using Python, and provide similar scripts compatible with MATLAB. Attendees will gain a more intuitive insight of key signal processing concepts using complex signals that are applicable to a wide range of applications.

## Workshop Instructions

Thank you for your interest in the Demystifying the Hilbert Transform workshop! Below are the installation instructions for Python in case you want to follow along hands-on with the examples given or run the examples later.

Option 1: Easy path to Python: Install the Anaconda Individual Edition which will have all the tools we will be using: https://www.anaconda.

Option 2: Alternative manual path to Python: As a minimum install we will be using Python 3, Numpy, Matplotlib, and Scipy:

Install python: https://www.python.

From command window type:

pip install ipython

pip install numpy

pip install matplotlib

pip install scipy

(if you encounter any difficulty with installing the packages, see this page: https://packaging.

Note: We will not be debugging any installation issues in the Workshop, and a Python installation is not necessary to follow along with the workshop presentation. Having a Python installation running with the above libraries is convenient if you want to follow along hands-on, as Dan will be demonstrating the material using Python. A Jupyter Notebook of the material presented will also be distributed here after the workshop for future reference, along with similar scripts that work in Matlab or Octave. If you would like further basics on running the Notebook, please see this link:

https://www.datacamp.com/

**DanBoschen**Speaker

**Jose.Reyes**

Great presentation as always on Hilbert Transform and its usage. Thank you for sharing the slides and Python Notebook

**DanBoschen**Speaker

Thank you Jose! I am glad you enjoyed it.

**dcomer**

Fantastic presentation as always. Thank You Dan!

Dave Comer (Unofficial Dan Boshen/Rick Lyons NM Fan Club Organizer) ;)

**DanBoschen**Speaker

Ha! Very nice, thank you Dave.

**ZiglioUK**

Hi Dan, finally watching this! there's always so much to learn from your classes!

Question about minimum phase filters, last year I asked a question to fred harris about why in a PLL we always seem to use IIR filters and not FIRs. His answer was that IIRs are minimum phase while FIRs add delays therefore can potentially create instabilities.

I remember from your telecom course you said that if there are analog delays in a transfer function (for example due to cable/transmission delays) that can also cause instabilities, by pushing poles to the PI limit.

So I took that for granted until I saw a presentation about this project:

https://github.com/ha5ft/pllpy

https://www.youtube.com/watch?v=mApnDERqKR8

There they use a range of blocks rather than simply IIR filters, blocks that definitely can add significant delays, like an FFT as a frequency discriminator.

So things are not necessarily clear cut, there's a bit more flexibility that can be added to the design of a PLL. What's your thought?

Thanks,

Emanuele

**DanBoschen**Speaker

Hi Emanuele- I am glad you enjoyed the presentation. Yes any delays that are added will reduce the phase margin in a control loop. I'll email you with further details since your question isn't related to this presentation.

**Stephane.Boucher**

Please find the Python notebook for this presentation on the left-hand side, under "Files Provided by the Speaker(s)" (you'll need to be registered and logged in)

**Leonard**

Are the slides and the code going to be located here?

**DanBoschen**Speaker

Yes I will be posting a pdf of the presentation, the Python Jupyter Notebook and Matlab code by the end of this week

**ZiglioUK**

*This post has been deleted by the author*

11:56:16 From Leonard : counting to 13 11:57:27 From Brewster LaMacchia : AM radio detector? 12:07:55 From Michael Kirkhart : "The Analytic Impulse" link: http://andrewduncan.net/air/ 12:24:33 From Marek Klemes : Note that Hilbert filter does not pass DC, so your signal should not contain DC. What is the math analogy to the impulse response at t=0? 12:26:15 From Dan Boschen : 4 12:26:20 From Marek Klemes : What is the value of Hilbert impulse response at t=0? 12:34:41 From mnapier : Application I seen for Hilbert is a tracking PLL. You have a reference frequency that you want to lock some other rate or tone generator to. Take the Hilbert for analytic signal. ATAN2 to get phase. The phase is sampled at a fixed rate (means only compute at fixed rate) and compare to phase accumulator. Run PLL error loop. 12:35:03 From mnapier : Mark 12:40:57 From Michael Kirkhart : Decibel dust 12:41:14 From mnapier : Below the ADC noise. 12:41:41 From Tim : Your x-axis is labelled in samples/cycle, but it looks more like radians? 12:47:25 From Stephane to Dan Boschen(Direct Message) : Feel free to go overtime if you need to 12:48:00 From Tim : Thanks! 13:12:45 From JohnP : Discrete prolate spheroidal (Slepian) sequences ? 13:13:11 From Michael Kirkhart : Discrete Prolate Spheroidal Sequences 13:13:46 From Michael Kirkhart : A link comparing DPSS and Kaiser: https://www.dsprelated.com/freebooks/sasp/Kaiser_Window.html 13:19:20 From mnapier : Thanks for a great presentation. 13:19:34 From Yair Mazal : thanks a lot 13:20:27 From Al Anway : best presentation I've ever seen! 13:20:37 From mnapier : In SDR we call it a rotator. 13:21:50 From mnapier : Because it take the spectrum and rotates it around the unit circle. 13:21:56 From Brewster LaMacchia : This was great. In the past I somewhat blindly used the Hilbert but never really looked under the hood - was saving that for a rainy day... It is raining here (Boston area) today. 13:22:09 From Michael Kirkhart : This was an excellent presentation! This helped clear up some confusion I had on analytic signals and why they are important, and why the Hilbert transform is useful (needed to create analytic signals from real signals). 13:25:18 From JohnP : I use hybrid couplers/combiners all the time. Never realized they realized Davey Hilbert's function. 13:25:52 From Michael Kirkhart : Can you make the presentation available? 13:26:25 From Stephane : This presentation is being recorded and will be uploaded later today. 13:27:13 From Michael Kirkhart : Cool! I will need to watch it at least one more time to gain a better understanding (much like Professor harris's lectures). 13:27:46 From Al Anway : your doppler shift reference reminds me of a cool way to do audio phlanging. 13:29:20 From mnapier : Audio application is a strobe tuner. Uses phase to track small differences in frequency. 13:29:48 From Brewster LaMacchia : as an audio person, it's pretty rare to have complex numbers in the processing other than a FFT->process->IFTT path 13:30:10 From Radu Pralea : what signal processing book was that (keeping the whole presentation real)? 13:32:51 From Michał Knioła : Thank you!

I believe I found a subtle error in my presentation: On Slide 22 I restricted the condition shown to "Minimum Phase Systems" where I don't believe that is actually the case: For any one sided waveform in one domain, the other domain will have the property that the real and imaginary components are related by the Hilbert Transform (so the frequency response for causal time domain systems, or the time response for the one-sided spectrum of the Analytic Waveform). I was confusing the relationship between the Magnitude and Phase (not real and imaginary), in which case the minimum phase restriction does apply: For a minimum phase system, the frequency response is uniquely determined by the magnitude response or phase response alone as I detail on Slide 49.