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.

  • $\begingroup$ Have you seen this? They also explain it for the discrete-time case, which seems to equal your first option for $\omega[n]$. $\endgroup$
    – Matt L.
    Oct 21, 2014 at 11:02
  • $\begingroup$ @MattL. Good enough for me. Didn't think to check IF on wikipedia. $\endgroup$
    – user27886
    Oct 21, 2014 at 11:08
  • $\begingroup$ There's also a paper by Barnes discussing several options for sampled data. See the section on IF approximations. $\endgroup$
    – Matt L.
    Oct 21, 2014 at 11:11
  • $\begingroup$ 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. $\endgroup$
    – user27886
    Oct 21, 2014 at 11:15
  • $\begingroup$ 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. $\endgroup$ Oct 21, 2014 at 15:33

1 Answer 1


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]} $$

Of course this is not the exact solution as it is still requires a discrete differentiation of the signal. But this could be done using standard techniques.

  • $\begingroup$ Cool! That does look faster without the $\tan^{-1}$. $\endgroup$
    – user27886
    Oct 22, 2014 at 13:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.