Why during demodulation, the demodulated signal might double its frequency? A minimal example:

from scipy.signal import hilbert, periodogram
import numpy as np
import matplotlib.pyplot as plt

fs = 20000
t = np.arange(0, 5, 1 / fs)
sig = np.cos(t * 2 * np.pi * 7)
carrier = np.cos(t * 2 * np.pi * 1000)
measured = sig * carrier

f, pxx = periodogram(np.abs(hilbert(measured)), fs, detrend=False)
plt.plot(f, pxx)
plt.xlim([-0.2, 30])

enter image description here


1 Answer 1


Assume that we have a signal $$x(t)=\cos(\omega t)$$ with a carrier $$c(t) = \cos(\omega_c t).$$ Than, for the amplitude modulated signal, $$y(t)=x(t)c(t),$$ the analytic signal is $$A(y(t))=x(t)e^{-j\omega_c t}.$$ Here, $x(t)$ can be extracted by $$\left|A(y(t))\right|=\left|x(t)\right|$$.

Now, for our case, following this derivation: $$\left|x(t)\right|=\left|\cos(\omega t)\right|=\frac{2}{\pi }+\frac{4}{\pi } \sum_{m=1}^{\infty }\frac{(-1)^{m}}{1-4m^{2}}\cos (2m \omega t)$$

Here, for $m=1$, the frequency is double the original frequency.

Other derivation could be based on $$\left|\cos(\omega t)\right|=\cos(\omega t)\cdot\text{sgn}\left[\cos(\omega t)\right]$$


Your Answer

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

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