Okay, this might be a very basic question, but I'm completely new to the field.

I have a $40$ Hz sine wave ($1000$ samples, $fs = 1$ kHz), which I have amplitude modulated to a $4$ Hz sine wave ($1000$ samples, $fs = 1$ kHz). In the time-domain, the result looks like I expected. However, when I calculate the FFT, there are $2$ sidebands but nothing at $40$ Hz anymore. If I increase the FFT resolution with zero-padding I can see something there, but very modest.

Is this expected behaviour? Can someone explain what is happening here and why. Thank you!

EDIT: to clarify, I get two peaks which are at 16 Hz and 24 Hz.

  • $\begingroup$ Also, should I be lifting the sines over zero before doing the AM modulation...? I saw that to be done somewhere $\endgroup$
    – stack
    Jul 4, 2013 at 14:18
  • $\begingroup$ The modulation depth is 100%. Forgot to mention. $\endgroup$
    – stack
    Jul 4, 2013 at 14:21
  • 1
    $\begingroup$ Could you post a code fragment (or a formula) to clarify what you actually did? $\endgroup$
    – Matt L.
    Jul 4, 2013 at 14:58
  • $\begingroup$ pastebin.com/FQb7cThx $\endgroup$
    – stack
    Jul 4, 2013 at 15:03
  • $\begingroup$ Should the signal bandwidth be below the modulation frequency? That would seem to solve problems... :I arrgh, this is difficult $\endgroup$
    – stack
    Jul 4, 2013 at 15:14

2 Answers 2


What you did is multiply two sinusoids with each other:


where $\theta_1=2\pi\cdot 40/1000$ and $\theta_2=2\pi\cdot 4/1000$. The result $z(n)$ can be written as


So you get two sinusoids with the sum and the difference of the two original frequencies, i.e. one with $40-4=36Hz$, and the other one with $40+4=44Hz$. This is exactly what you see in your FFT plot. You use a 1000-point FFT, i.e. the frequency at index $i$, ($i=1,2,\ldots,1000)$, is given by

$$f_i=\frac{f_s}{1000}(i-1)=i-1,\quad i=1,\ldots,1000$$

where $f_s=1000Hz$ is the sampling frequency. You get peaks at $i=37$ and $i=45$, which correspond to frequencies $f_{37}=36Hz$ and $f_{45}=44Hz$, exactly as expected.

I think you made a mistake in the mapping of FFT indices to frequencies.

By the way, with standard amplitude modulation you indeed get the carrier in the spectrum because the modulated signal looks like


where $x(n)$ is your message, $m$ is a scaling factor, $\theta_0$ is the carrier frequency, and the term $1$ which is added to the signal results in the carrier wave in addition to the sidebands. You just multiplied two sinusoids without this constant term, that's why you don't see any carrier. This was already correctly pointed out in chirlu's answer.


From the code, it appears that you are multiplying both signals, i.e. $c(t)\cdot s(t)$. However, regular amplitude modulation with 100% depth is $c(t)\cdot (0.5+0.5\cdot s(t))$.


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.