Teager-Kaiser Operator vs. Hilbert Transform Since a couple of months I started working on the extraction (estimation) of signal frequency and amplitude components by means of two different time-frequency approaches, namely the Hilbert transform and the Teager-Kaiser energy operator.

I tested both methods on standard signals, such as chirps, sine, cosine, etc. This preliminary analysis seemed to highlight Teager-Kaiser has better resolution in both frequency and amplitude estimation.

Afterwards I applied the two methods on some acceleration signal derived from a tool simulating the dynamic behavior of a given system. Surprisingly enough, Hilbert transform provided more reliable results in terms of frequency estimation. Teager-Kaiser operator shows some high-frequency content estimation, which is hardly expectable.

I developed the two techniques in Simulink, as visible here:


The results on a synthetic acceleration signal are here:


What did I miss in the design of the Teager-Kaiser operator? Is it any possible to avoid those "false" frequency estimates (those with the arrows)?
This paper may be of interest:

David Vakman, "On the Analytic Signal, the Teager-Kaiser Energy Algorithm, and Other Methods for Defining Amplitude and Frequency." IEEE Trans. Signal Processing. (1996)

Summarising from the paper:

$$\Psi(u) = a^2w^2 = [u'(t)]^2 - u(t)u''(t)$$
$$\Psi'(u') = a^2w^4 = [u''(t)]^2 - u'(t)u'''(t)$$

where $u(t)$ is the signal, and $a$ and $w$ iare the amplitude and frequency estimates to solve for.

$$a(t) = \frac{\Psi(u)}{\sqrt{\Psi(u')}}$$
$$w(t) = \sqrt{\frac{\Psi(u')}{\Psi(u)}}$$

But this means if at some point in the signal $u'(t)=1$ and $u''(t)=u''''(t)=0$, for example, then $\Psi(u) = 1$ and $\Psi'(u) = 0$ and thus $a(t) = \infty$ and $w(t) = 0$.

The paper thus explains this causes spikes in amplitude and zero frequencies with the Teager-Kaiser algorithm.

For your signal, the reverse must be true. If $\Psi(u) = 0$ and $\Psi'(u) = 1$ then you would get spikes in frequency when amplitude is zero. This would occur when $[u'(t)]^2 = u(t)u''(t)$

The Hilbert transform uses the entire signal to compute. It is implemented by doubling the positive frequencies and setting the negative frequencies to zero. Therefore the energy of the signal does not change (Parseval's theorem). Thus, intuitively, there can be no infinite spikes, as this would require infinite energy.