# How to extract IF (instantaneous frequency) from Discrete Hilbert Transform?

The continuous time Hilbert transform is $$\hat x(t) := x(t) + j\left( p.v. \left\{\frac{1}{t\pi} \ast x \right\} (t)\right)$$

where $$\theta(t) = \tan^{-1}\left( \frac{ p.v. \left\{\frac{1}{t\pi} \ast x \right\} (t)}{x(t)} \right)$$ and $$\omega(t) = \theta'(t)$$

and since $\theta(t)$ is smooth, you can actually calculate the instantaneous frequency. But in the discrete time domain, the angle function is discrete, so given that in the dt domain, your hilbert transform filter is

$$h_{HT}[n] = \left\{ \begin{array}{ll} \frac{1}{n\pi} & \mbox{if}\ \ n \neq 0 \\ 0 & \mbox{otherwise} \\ \end{array} \right.$$

How do you get the approximate frequency? or are you really just getting $\Delta\theta[n]$? Sorry if this is me just getting hung up on something trivial, but most references don't seem to clearly address this.

$$\theta[n] = \tan^{-1}\left(\frac{(h_{HT} \ast x)[n]}{x[n]}\right)$$ $$\omega[n] = \left\{ \begin{array}{ll} \theta[n] \ast \frac{1}{T_s}(\delta[n] - \delta[n-1]) & ? \\ \theta[n] \ast \frac{1}{2T_s}(\delta[n+1] - \delta[n-1]) & ? \\ ??? \end{array} \right.$$

I'm looking for what is typically done. The "Standard" approach.

• Have you seen this? They also explain it for the discrete-time case, which seems to equal your first option for $\omega[n]$. – Matt L. Oct 21 '14 at 11:02
• @MattL. Good enough for me. Didn't think to check IF on wikipedia. – user27886 Oct 21 '14 at 11:08
• There's also a paper by Barnes discussing several options for sampled data. See the section on IF approximations. – Matt L. Oct 21 '14 at 11:11
• Excellent! Thanks! I did a basic literature search before asking, I swear. But i was looking mostly at HT & HHT references, not IF references, so maybe that had something to do with it. – user27886 Oct 21 '14 at 11:15
• you have a curious mix of discrete and continuous-time expressions that should get ironed out. regarding this: $$\theta[n] = \tan^{-1}\left(\frac{(h_{HT} \ast x)[n]}{x[n]}\right)$$ $$\omega[n] = \left\{ \begin{array}{ll} \theta[n] \ast \frac{1}{T_s}(\delta[n] - \delta[n-1]) & ? \\ \theta[n] \ast \frac{1}{2T_s}(\delta[n+1] - \delta[n-1]) & ? \\ ??? \end{array} \right.$$ you need to look into designing a digital differentiator, if you want to do this the best. however, your first expression is likely okay. – robert bristow-johnson Oct 21 '14 at 15:33

I have a nice solution for you that I'm always using whenever I need to compute the instantaneous frequency of a discrete analytical signal and which works much better then the common approach using $tan(.)$ where you need to introduce thresholds and fiddle around with adding/subtracting $2\pi$. In addition to that it is even faster.
Given a signal $x(t)$ and the corresponding analytical signal $$\xi(t) = x(t) + i\mathcal{H}x(t)$$ with $\mathcal{H}$ being the hilbert transform operator the instantaneous frequency $\omega(t)$ can be computed as followed. We have $\omega(t)=\dot{\varphi}(t)$ with $\varphi(t)=\Im log\xi(t)$ being the phase of the analytical signal $\xi$ ($\Im$ denotes the imaginary part). Combining these equations we get $$\omega(t)=\Im\frac{d}{dt}log\xi(t)=\Im\frac{\dot{\xi}(t)}{\xi(t)}$$ This can also be seen be as follows: $$\Im\frac{\dot{\xi}}{\xi} = \Im\frac{ \dot{A}e^{i\varphi} + iAe^{i\varphi}\dot{\varphi} }{Ae^{i\varphi}} = \Im\Big[ \frac{\dot{A}}{A} + i\dot{\varphi} \Big] = \dot{\varphi}$$ Discretizing this equation you can now compute the discrete instantaneous frequency from the discrete analytical signal: $$\omega[n]\approx\Im\frac{\xi[n+1]-\xi[n]}{\xi[n]}$$ or second order: $$\omega[n]\approx\Im\frac{\xi[n+1]-\xi[n-1]}{2\xi[n]}$$
• Cool! That does look faster without the $\tan^{-1}$. – user27886 Oct 22 '14 at 13:44